![](/img/trans.png)
[英]Retrieve customer who bought more than 13 different products who never purchased same product
[英]SQL Query count how many products bought on one day by those who bought more than 3 products on a different day
我想写一个查询来计算在2016-01-01年购买了2个或更多产品的人在2015-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;
效率不高,但是可以达到预期的效果
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)
一种方法是使用两个级别的聚合,第一个级别在客户级别,第二个总体:
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.