-3

1 つの日付に多くの販売があり、多くの行になる可能性があるためです。

しかし、どうすればこれができるかわかりません。

これまでのところ、私は持っています:

SELECT cd_no
FROM sales

エイリアス「m」が「NULL」を返すサブクエリselectにあると思う問題

4

1 に答える 1

3

CD_NOでグループ化し、行を数えることで、各CDの総売上数を数えることができます。

SELECT CD_NO, COUNT(*) AS purchases
FROM Sales
GROUP BY CD_NO

次のように、特定の日付範囲での各CDの販売数を取得できます(<date condition>Trueの場合は1、Falseの場合は0になるため)。

SELECT CD_NO, SUM(<date condition>) AS purchases
FROM Sales
GROUP BY CD_NO

2012年7月には、purchasedate BETWEEN '2012-07-01' AND '2012-07-31'またはYEAR(purchasedate) = 2012 AND MONTH(purchasedate) = 7などのオプションを使用できます。

2つの日付範囲を比較するには

SELECT
    CD_NO,
    SUM(purchasedate BETWEEN '2012-07-01' AND '2012-07-31') AS a,
    SUM(purchasedate BETWEEN '2011-07-01' AND '2011-07-31') AS b
FROM Sales
GROUP BY CD_NO

最後に、購入数が15%多い行を選択するには...

SELECT CD_NO
FROM (
    SELECT
        CD_NO,
        SUM(purchasedate BETWEEN '2012-07-01' AND '2012-07-31') AS a,
        SUM(purchasedate BETWEEN '2011-07-01' AND '2011-07-31') AS b
    FROM Sales
    GROUP BY CD_NO) AS t
WHERE t.a > 1.15 * t.b

または単に:

SELECT CD_NO
FROM Sales
GROUP BY CD_NO
HAVING       SUM(purchasedate BETWEEN '2012-07-01' AND '2012-07-31') 
     > 1.15 * SUM(purchasedate BETWEEN '2011-07-01' AND '2011-07-31') ;
于 2012-12-02T00:46:24.473 に答える