Mysql 去年7月至7月,哪张CD的销量更大
因为在一个日期可以有很多次销售,而且会有很多行 然而,我不知道如何才能做到这一点 到目前为止,我已经:Mysql 去年7月至7月,哪张CD的销量更大,mysql,database,Mysql,Database,因为在一个日期可以有很多次销售,而且会有很多行 然而,我不知道如何才能做到这一点 到目前为止,我已经: SELECT cd_no FROM sales 我认为问题出在子查询select中,别名“m”返回“NULL”您可以通过按CD编号分组和计数行来计算每张CD的销售总数: SELECT CD_NO, COUNT(*) AS purchases FROM Sales GROUP BY CD_NO 您可以获得特定日期范围内每张CD的销售数量,如下所示,因为如果为真,则为1,如果为假,则为0: S
SELECT cd_no
FROM sales
我认为问题出在子查询select中,别名“m”返回“NULL”您可以通过按CD编号分组和计数行来计算每张CD的销售总数:
SELECT CD_NO, COUNT(*) AS purchases
FROM Sales
GROUP BY CD_NO
您可以获得特定日期范围内每张CD的销售数量,如下所示,因为如果为真,则为1,如果为假,则为0:
SELECT CD_NO, SUM(<date condition>) AS purchases
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') ;
如果不知道所查询的数据,就很难得到可用的答案。您是否将CD销售存储在表中?该表的模式是什么?该表中的行的含义是什么?我只存储purchasedate的销售信息。每次进行采购时,都会生成一行purchasedate。。。因此,可能有许多行具有相同的购买日期。计算某一特定日期的购买日期将得到该特定日期的总销售额。是否要包括去年没有销售的CD?相同的问题:看起来这里有一个潜在的除以零的值,并且您将包括每一张CD,是否有销售。@user1854392如果您需要帮助修复除以0的问题,请告诉我。此代码工作不正常请选择CD_no,SUMYEARpurchasedate=YEARCURDATE和MONTHopdate=7作为销售组的成员,使用CD_no>0让我编辑我的代码,这几乎就是我需要的。。。然而,它没有返回我所需要的。
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') ;