在Query&中将静态日期更改为更改日期聚合函数问题 - MYSQL

时间:2012-12-03 18:55:03

标签: mysql database aggregate-functions

我有以下查询:

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年后进行这个查询,那么查询将测试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,显然这应该包括在我的结果中。

1 个答案:

答案 0 :(得分: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