0

次のクエリがあります。

SELECT Artist_no, SUM(purchasedate BETWEEN '2012-07-01' AND '2012-07-31') / 
                  SUM(purchasedate BETWEEN '2011-07-01' AND '2011-07-31')
FROM Sales

これにより、CD のテーブル 'Sales' 内での売上の増加/減少のパーセンテージが正常に返されます。ただし、コードを変更して、代わりに 2011 年 7 月と 2012 年 7 月の特定の日付をリストし、代わりに今年の 7 月と昨年の 7 月をリストするようにしたいと考えています。この新しいクエリを今実行しても同じ結果が得られることは理解していますが、このクエリを 100 年後に実行するとしたら、クエリは 2111 年 7 月と 2112 年 7 月をテストすることになります。

私はこれを自分でやろうとしましたが、コードを実行すると私の答えはNULLです。これは当てはまりません。次の新しいコードがここにあります (正しくありませんが)。

SELECT SUM(purchasedate = YEAR(CURDATE() AND MONTH(purchasedate) = 7))
     / SUM(purchasedate = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR) AND MONTH(purchasedate) = 7)) 
FROM Sales

第二に、新しいアーティストが新しい CD を持っている場合、それは 0 に対して除算され、結果には含まれませんが、たとえば 2011 年 7 月は 0 で、2012 年 7 月は 398 であり、これは明らかに含まれるべきです。私の結果では。

4

1 に答える 1

1

以下のようにフォーマットされた日付文字列を比較してみてください。

   SELECT SUM(date_format(purchasedate, '%m-%Y') = CONCAT('07-',YEAR(CURDATE()))
         / SUM(date_format(purchasedate, '%m-%Y') = 
                         CONCAT('07-',YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR)) 
   FROM Sales
于 2012-12-03T19:04:16.237 に答える