2012-12-03 9 views
0

我有以下查詢:在我的表「銷售」內銷售從靜態日期更改爲在查詢和問題與聚合函數中的日期變更 - MYSQL

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。不過,我希望修改代碼,以便將2011年7月的具體日期與2012年7月相比,而不是去年的7月份,而不是去年的7月份。我知道現在運行這個新的查詢將獲得相同的結果,但是我希望如果您在100年的時間內執行此查詢,查詢將在2112年7月與2111年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例如,顯然這應該包含在我的結果中。

回答

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 
+0

非常感謝你 – user1854392