Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 去年7月至7月,哪张CD的销量更大_Mysql_Database - Fatal编程技术网

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') ;