我想写一个查询来计算2015-01-01购买2件或更多产品的人在2016-01-01购买了多少把椅子
表:
销售(日期,customer_id,product_id,units_sold)
产品(ID,名称,价格)
客户(身份证,姓名)
到目前为止我的SQL代码:
SELECT sum(s.units_sold)
FROM Sales s, Products p
WHERE p.name = 'Chair' and s.date = '2015-01-01' and s.product_id = p.id;
答案 0 :(得分:1)
效率不高,但会产生预期效果
SELECT sum(s.units_sold)
FROM Sales s, Products p
WHERE p.name = 'Chair' and s.date = '2015-01-01' and s.product_id = p.id
AND s.customer_id IN (SELECT customer_id FROM Sales WHERE date = '2016-01-01' AND units_sold > 1)
答案 1 :(得分:0)
一种方法是使用两个级别的聚合,第一个是客户级别,第二个是整体聚合:
SELECT SUM(chairs_2015)
FROM (SELECT s.customer_id,
SUM(CASE WHEN p.name = 'Chair' and s.date = '2015-01-01
THEN s.units_sold
END) as chairs_2015,
FROM Sales s JOIN
Products p
ON s.product_id = p.id
WHERE SUM(CASE WHEN s.date = '2016-01-01 THEN 1 ELSE 0 END) >= 2
GROUP BY s.customer_id
) s;