我有一张顾客桌:

id   name
1    customer1
2    customer2
3    customer3

以及事务表:
id   customer   amount   type
1    1          10       type1
2    1          15       type1
3    1          15       type2
4    2          60       type2
5    3          23       type1

我希望查询返回下表
name        type1    type2
customer1   2        1
customer2   0        1
customer3   1        0

这表明customer1已经做了两个类型1的事务和一个类型2的事务,以此类推。
有没有一个查询可以用来获得这个结果,或者我必须使用过程代码。

最佳答案

你可以试试

select c.id as customer_id
   , c.name as customer_name
   , sum(case when t.`type` = 'type1' then 1 else 0 end) as count_of_type1
   , sum(case when t.`type` = 'type2' then 1 else 0 end) as count_of_type2
from customer c
   left join `transaction` t
   on c.id = t.customer
group by c.id, c.name

这个查询只需要在连接上迭代一次。

关于sql - 如何在MySQL中为每个客户查找类型1和类型2的交易计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1465160/

10-13 01:19