1

我有下表:

+---------+------+------------+
|玩家 |游戏 |状态 |
+---------+------+------------+
|Player01 |GameA |未完成 |
|Player02 |GameA |未完成 |
|Player03 |GameC |已完成 |
|Player04 |GameA |未完成 |
|Player05 |GameB |已完成 |
|Player06 |GameB |已完成 |
|Player07 |GameA |未完成 |
|Player08 |GameA |已完成 |
|Player09 |GameC |未完成 |
|Player10 |GameB |已完成 |
|Player11 |GameB |未完成 |
|Player12 |GameA |已完成 |
......
+---------+------+------------+

并希望显示每场比赛的玩家人数和完成游戏的玩家人数:

+-----+------+----------+
|游戏 |玩家人数|已完成 |
+-----+------+----------+
|游戏A | 6 | 2 |
|游戏B | 4 | 3 |
|游戏C | 2 | 1 |
...
+-----+------+----------+

执行该任务的最简单的 SQL 选择命令是什么?谢谢你。

4

2 回答 2

1

尝试这个

select Game , count(*) NumPlayers,
sum(case when status = 'completed' then 1 else 0 end) completed 
from table
group by game
于 2013-03-26T13:46:44.747 回答
0

你想要一个条件求和:

select game, count(distinct Player) as NumPlayers,
       sum(case when status = completed then 1 else 0 end) as Status
from t
group by game
于 2013-03-26T13:46:27.277 回答