1 つの日付に多くの販売があり、多くの行になる可能性があるためです。
しかし、どうすればこれができるかわかりません。
これまでのところ、私は持っています:
SELECT cd_no
FROM sales
エイリアス「m」が「NULL」を返すサブクエリselectにあると思う問題
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') ;