SQL查询计算在不同的一天购买超过3种产品的人在一天内购买的产品数量

时间:2016-02-09 03:40:25

标签: mysql sql

我想写一个查询来计算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;

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

2 个答案:

答案 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;