最近遇到了一个sql查询,需要统计每个用户的订单量多少,降序挨个显示出来
1:用户表user_info
user_id user_name
001 张三
002 李四
003 王五
004 赵六
2:订单表order_manage
order_id user_id
1 001
2 001
3 002
4 003
5 003
6 003
3:举个上面的例子,现在有4个用户,6条订单,需要按照用户分组,并挨个统计他们的订单数。
先来看一个一般的查询语句
select count(*) num,user_id from order_manage where seller_id in(select user_id from user_info ) group by user_id order by num DESC
这条语句的查询结果是
num user_id
3 003
2 001
1 002
可以看出订单数为0的结果没显示,那么怎样才能显示出来呢?这时候可以用的表的关联查询
select k.user_id uid,count(m.user_id) num from (select user_id from user_info ) k left join (select user_id from order_manage ) m on k.user_id = m.user_id
group by k.user_id order by num DESC
查询结果是
uid num
003 3
001 2
002 1
004 0