我有一个sqlite数据库,我试图计算列中出现的值以及相应行中出现的值。
我的数据集是:
participant_id game_id win selected_champion
2 3640481414 0 Yasuo
7 3643429174 0 Gangplank
10 3643470467 1 Jhin
5 3643669725 0 Rammus
10 3643707347 1 Talon
10 3644255324 1 Sivir
5 3644305477 1 Sion
8 3644626709 1 Shaco
5 3645020045 1 Warwick
10 3645063546 0 Jhin
预期的输出是
selected_champion games_played games_won
Gangplank 1 1
Jhin 2 1
Rammus 1 0
我可以用查询得到玩游戏的次数
SELECT
selected_champion,
count(selected_champion) as 'games_played'
FROM (myTable) GROUP BY selected_champion
但我似乎不知道如何计算赢=1的次数与冠军相比。
2条答案
按热度按时间qcbq4gxm1#
您可以执行条件聚合:
这是因为
win
包含0
s和1
只有她。如果是像'won'
,'lost'
,您将执行以下操作:旁注:不要对标识符使用单引号。虽然有些数据库可能接受它,但单引号应该只保留给文本字符串。为数据库使用正确的引号字符(在sqlite中,最好使用双引号),或者最好使用不需要引号的标识符。
yvfmudvl2#
可以求和,因为它取0和1的值:
更一般的解决方案是将其转换为布尔值:
或在任何数据库中工作的版本: