今天遇到一道题目,打开了having使用的新世界
本来设想中是比较复杂的临时表。看题解学到了having的筛选用法。
select c.customer_id,c.name
from customers c
join orders o on c.customer_id=o.customer_id
join product p on o.product_id=p.product_id
group by c.customer_id,c.name
having sum(if(left(order_date,7)='2020-06', quantity*price,0 ))>=100
and sum(case when left(order_date,7)='2020-07' then quantity*price else 0 end)>=100
1、用left来选择到月份
2、having里可以使用if也可以使用case来聚合感兴趣的数据
3、group by需要按两列分组,或者按c.name分组,select的时候用聚合函数取customer_id