我有一个表,其中表中的每个实例都是一个售出的票证,并且票证可以有不同的票证类型.看起来像这样:

Event Ticket Type
Event 1 a
Event 2 a
Event 1 b
Event 2 a
Event 1 a

我希望它按活动分组,但显示该活动的总门票以及每种门票类型的数量.

Event Total Tickets Ticket Type a Ticket Type b
Event 1 3 2 1
Event 2 2 2 0

我try 了几个不同的查询,但都没有显示出我想要的结果.这在一个查询中是可能的吗?

推荐答案

是的,可以使用GROUP BY对事件数据进行分组,然后计算总数.下面的查询计算票数,然后计算每种类型"a"和"b"的票数.

SELECT 
    Event,
    COUNT(*) AS 'Total Tickets',
    COUNT(CASE WHEN TicketType = 'a' THEN 1 END) AS 'Ticket Type a',
    COUNT(CASE WHEN TicketType = 'b' THEN 1 END) AS 'Ticket Type b'
FROM
    Tickets
GROUP BY
    Event;

Mysql相关问答推荐

如何在Sequelize中创建限制查询?

S在我的SQL代码中的外键出了什么问题?

在时间戳上搜索大的MySQL表很慢

我是否需要在 N+1 列上建立索引,才能有效地在 N 列上执行 SELECT,并按其他列排序?

如何通过SQL来计算到达特定值的行的数量

如何在 MySQL Workbench 中设置 DateTime 列的默认值?

将sql查询转换为sequelize

基于 3 个条件 Select 3 行的最佳 MySQL 索引和查询

MYSQL如何将虚拟列添加到现有表中

使用 ON DUPLICATE KEY 将列增加一定数量 MySQL NodeJS

如何在 Mysql 中创建复合外键

如何在 SQL 的计算列中显示小数点后两位?

试图获取非对象的属性

MySQL 5.6 DATETIME 不接受毫秒/微秒

从终端访问 MAMP 的 MySQL

MySQL计算特定值的列

phpmyadmin没有收到要导入的数据错误,如何解决?

WHERE 子句中的条件顺序会影响 MySQL 性能吗?

带有 OuterRef 的简单子查询

PHP MYSQL - 插入不使用列名但使用自动增量字段