【问题标题】:SQL aggregate functionsSQL 聚合函数
【发布时间】: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)。 (每次销售价格可能不同)

【问题讨论】:

  • 能否插入您的查询和错误信息?您可以编辑您的问题。

标签: sql aggregate


【解决方案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)

【讨论】:

    猜你喜欢
    • 2013-08-14
    • 2019-07-23
    • 2020-08-05
    • 2016-08-15
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多