我有这些表:
customer
--------
customer_id int
name varchar(255)
order
-----
order_id int
customer_id int
discount boolean
我可以通过如下查询获取每个客户的订单数量:
select c.id, count(o.order_id)
from customer c
left join order as o using c.customer_id = o.customer_id
group by 1
或者,我可以通过以下方式获取每个客户的打折订单数量:
select c.id, count(o.order_id)
from customer c
left join order as o using c.customer_id = o.customer_id and o.discount = true
group by 1
但我想不出一种在单个查询中同时获得两者的方法。我尝试了以下方法:
select c.id, count(o.order_id), count(o2.order_id)
from customer c
left join order as o using c.customer_id = o.customer_id
left join order as o2 using c.customer_id = o2.customer_id and o2.discount = true
group by 1
但是没有用。是否可以在单个 (MySql) 查询中计算两者?
干杯, 唐
最佳答案
怎么样
select c.id, count(o.order_id),sum(if(o.discount,1,0))
from customer c
left join order as o using c.customer_id = o.customer_id
group by c.id
关于sql - 按查询挑战分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/429136/