如何在单查询中按Event分组并拆分Ticket Type统计数据?
单条SQL实现按事件分组统计票务数据
可以通过分组+条件聚合的方式用单条查询实现需求,假设你的票务表名为ticket_sales,对应的SQL语句如下:
SELECT Event, COUNT(*) AS `Total Tickets`, SUM(CASE WHEN `Ticket Type` = 'a' THEN 1 ELSE 0 END) AS `Ticket Type a`, SUM(CASE WHEN `Ticket Type` = 'b' THEN 1 ELSE 0 END) AS `Ticket Type b` FROM ticket_sales GROUP BY Event;
语句说明:
GROUP BY Event:按事件名称分组,确保每个事件仅返回一行统计结果。COUNT(*):统计分组内的总记录数,即该事件的总售票量。SUM(CASE...):通过条件判断实现指定票种的计数——当票种匹配时返回1,否则返回0,求和后得到对应票种的售出数量;无对应票种时自动返回0,完全匹配你的目标格式要求。
代入你的原始数据验证时,会得到与目标表完全一致的结果:
- Event 1总票数3,票种a售出2张、票种b售出1张
- Event 2总票数2,票种a售出2张、票种b售出0张
内容的提问来源于stack exchange,提问作者Dadi
相关产品推荐
相关产品推荐

