繁体   English   中英

SQL查询统计在一天中购买了3种以上产品的人一天购买了多少种产品

[英]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;

小提琴: http ://sqlfiddle.com/#!9/ a0b56

效率不高,但是可以达到预期的效果

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM