技术问询:如何统计ListPrice超过$1000的已售商品总数量
搞定ListPrice超1000美元的已售商品总数量统计
嘿,我明白你的问题了——你原来的查询用了GROUP BY,所以返回的是每个符合条件的产品各自卖了多少,但你要的是所有这类产品加起来的总销量对吧?那咱们把分组去掉就行啦!
正确的SQL语句
SELECT COUNT(*) AS TotalSoldItems FROM Product AS pro JOIN SalesOrderDetail AS sod ON pro.ProductID = sod.ProductID WHERE pro.ListPrice > 1000;
为啥这么改?
- 去掉
GROUP BY pro.ProductID, pro.Name, pro.ListPrice和后面的HAVING子句,因为咱们不需要按产品拆分统计,只要所有符合条件的销售记录的总数。 COUNT(*)会统计内连接后所有满足ListPrice > 1000的行,每一行对应一个卖出去的商品,所以这个结果就是你要的总数量。- 要是你想更严谨,用
COUNT(sod.SalesOrderDetailID)替代COUNT(*)也完全ok,毕竟SalesOrderDetailID是主键,不会有空值,统计结果和COUNT(*)一致。
另外提一句,你用的是内连接,本来就只会返回有销售记录的产品,所以不用额外加过滤条件哦。
内容的提问来源于stack exchange,提问作者TML
相关产品推荐
相关产品推荐

