我有 3 个列标题,分别是 account_id、game_date 和 queue_type。我必须显示每个 queue_type 一个帐户玩了多少场比赛。 Atm 我能够显示每个帐户在设定时间段内玩的游戏总数,但我如何才能深入了解总数,而不是显示队列类型的列而不是总数?
SELECT account_id, COUNT(*) as GamesPlayed FROM Games
WHERE DATE (game_date) BETWEEN '2012-01-01' AND '2013-01-01'
GROUP BY account_id
HAVING COUNT(account_id) > 2;
这给了我两列,帐户 ID,然后是它旁边玩过的游戏总数,但是我希望在顶部玩过的游戏类型作为列标题,而不是总数。一共有4种游戏类型。
最佳答案
这称为条件聚合。您可以计算不同的类型并为它们分配所需的列名。 (根据您的数据更改 queue_type 值)
SELECT account_id
,COUNT(case when queue_type = 'A' THEN 1 END) as A
,COUNT(case when queue_type = 'B' THEN 1 END) as B
,COUNT(case when queue_type = 'C' THEN 1 END) as C
,COUNT(case when queue_type = 'D' THEN 1 END) as D
FROM Games
WHERE game_date >= '2012-01-01' AND game_date <='2013-01-01'
GROUP BY account_id
或者更简单的说
SELECT account_id
,SUM(queue_type = 'A') as A
,SUM(queue_type = 'B') as B
,SUM(queue_type = 'C') as C
,SUM(queue_type = 'D') as D
FROM Games
WHERE game_date >= '2012-01-01' AND game_date <='2013-01-01'
GROUP BY account_id
关于mysql - 如何增加输出表中的列数以显示更多详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41896340/