SQL聚合函数

时间:2009-02-04 09:06:38

标签: sql aggregate

我对此SQL products/productsales

提出了类似的问题

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

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

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 )

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

2 个答案:

答案 0 :(得分:1)

HAVING (Sum(s.quantity*s.price)) > @X

可能会成功吗?

答案 1 :(得分:0)

(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)