SQL 聚合函数

Posted

技术标签:

【中文标题】SQL 聚合函数【英文标题】:SQL aggregate functions 【发布时间】:2009-02-04 09:06:38 【问题描述】:

我有一个类似的问题SQL products/productsales

我想做同样的查询,但不是只检查数量,而是要检查“总计”(即数量 * 价格)。 “价格”是销售表中的一个字段。

这是该链接上建议的原始查询:

SELECT p.[name]
 FROM products p
 WHERE p.product_id in (SELECT s.product_id
     FROM productsales s
     WHERE s.[date] between @dateStart and @dateEnd
     GROUP BY s.product_id
     HAVING Sum(s.quantity) > @X )

所以我需要将每个销售的 (s.quantity*s.price) 相加,然后与 @X 进行比较,而不是 Sum(s.quantity)。 (每次销售价格可能不同)

【问题讨论】:

能否插入您的查询和错误信息?您可以编辑您的问题。 【参考方案1】:
HAVING (Sum(s.quantity*s.price)) > @X

可以解决问题吗?

【讨论】:

我正忙着测试这个。似乎是对的。我稍后会编辑此评论。谢谢! 看来我无法编辑 cmets :) 对垃圾邮件感到抱歉。无论如何,我已经编辑了我的问题。如果每次销售的价格都相同,则您的原始答案有效。【参考方案2】:

(来自 Cagcowboy 的回答被标记为接受,但评论似乎表明它不起作用,所以这是另一种方法)

此代码使用派生表首先计算出每个产品的“总计”,然后将分组等叠加在上面。

SELECT p.name from products p
WHERE p.product_id IN
    (SELECT product_id from 
        (SELECT product_id, (quantity * price) as total
         FROM productsales WHERE date between @dateStart and @dateEnd) as s
    GROUP by s.product_id
    HAVING sum(total) > @x)

【讨论】:

以上是关于SQL 聚合函数的主要内容,如果未能解决你的问题,请参考以下文章

sql 2005 聚合函数

sql server中啥是聚合函数

sql 语句中那些是聚合函数?

SQL Server中的聚合函数都有哪些?

SQL Server聚合函数与聚合开窗函数

在SQL中的聚合函数