mysql - 对不同列中的值进行分组并计数

标签 mysql sql count group-by

我有这张表:

UNIQUE_ID | WINNER_ID | FINALIST_ID
________1 | ________1 | __________2
________2 | ________1 | __________3
________3 | ________3 | __________1
________4 | ________1 | __________2

我需要所有玩家(获胜者和决赛入围者)的列表以及他们获得第一名或第二名的次数。

在这种情况下,它将是:

PLAYER_ID | WINNER_TIMES | FINALIST_TIMES
________1 | ___________3 | _____________1
________2 | ___________0 | _____________2
________3 | ___________1 | _____________1

这里已经提出了类似的问题( LINK ),但我不明白答案。

最佳答案

select  coalesce(winner_id, finalist_id) as PLAYER_ID
,       count(winner_id) as WINNER_TIMES
,       count(finalist_id) as FINALIST_TIMES
from    (
        select  winner_id
        ,       null as finalist_id
        from    YourTable
        union all
        select  null
        ,       finalist_id
        from    YourTable
        ) as SubQueryAlias
group by
        coalesce(winner_id, finalist_id)

Live example at SQL Fiddle.

关于mysql - 对不同列中的值进行分组并计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11073646/

相关文章:

mysql - 如何在 SQL 中对整体的各个部分求和并显示每个部分的总和?

mysql - SQL - 创建 ' dynamic/dependant' 表

MySQL count, group by 和 join 查询

php - 在 MySQL 查询中使用数组结果

mysql - 以日历季度为列分组

mysql - 如果多个表中不存在该行,则插入该行

mysql - MySQL 中指定期间的每月总用户数、发票数

Python-如何计算列表中出现的次数

java - 在 java 中设置准备和执行查询

php - 插入批处理,如果重复键更新在 Codeigniter 3 HMVC 中