题55:
根据下面三个表写一个 SQL 语句, 结果返回消费者在 2020 年 6 月和 7 月, 每月至少花费了$100,输出结果包含消费者的 id 和名字。
其中:
- Customers表:customer_id 是主键,该表包含公司消费者的信息;
- Product表:product_id 是主键,price 是本产品的花销,该表包含公司产品的信息;
- Orders:order_id 是主键,customer_id 是买了数量为"quantity", id为"product_id"产品的消费者的 id,Order_date 是订单发货的日期, 格式为(‘YYYY-MM-DD’),该表包含消费者下单的信息。
解题思路:不使用临时表只用Group By和Having
select c.customer_id,c.name
from Orders as o
join Product as p
on o.product_id = p.product_id
join Customers as c
on c.customer_id = o.customer_id--将三个表连接
group by o.customer_id--根据顾客id分组
having sum(if(month(order_date)= 7, price*quantity, 0)) >= 100 --计算7月每个顾客的消费金额
and sum(if(month(order_date)= 6, price*quantity, 0)) >= 100 ;--计算6月每个顾客的消费金额