Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL行和列中值的计数频率_Sql_Sqlite_Group By_Count_Pivot - Fatal编程技术网

SQL行和列中值的计数频率

SQL行和列中值的计数频率,sql,sqlite,group-by,count,pivot,Sql,Sqlite,Group By,Count,Pivot,我有一个SQLite数据库,我试图计算列中出现的值以及相应行中出现的值 我的数据集是: participant_id game_id win selected_champion 2 3640481414 0 Yasuo 7 3643429174 0 Gangplank 10 3643470467 1 Jhin 5 3643669

我有一个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

但我似乎不知道如何计算win=1与冠军相比的次数。

你可以求和,因为它取0和1的值:

SELECT selected_champion, COUNT(*) as games_played, SUM(win) as games_won
FROM myTable
GROUP BY selected_champion;
更一般的解决方案是将其转换为布尔值:

SUM( win = 1 )
或在任何数据库中工作的版本:

SUM(CASE WHEN win = 1 THEN 1 ELSE 0 END)

您可以执行条件聚合:

select 
    selected_champion,
    count(*) games_played,
    sum(win) games_won
from mytable
group by selected_champion
这是因为
win
仅包含
0
s和
1
s。如果它是一个类似于
'won'
'lost'
的字符串,您将执行以下操作:

select 
    selected_champion,
    count(*) games_played,
    sum(win = 'won') games_won
from mytable
group by selected_champion
旁注:不要对标识符使用单引号。尽管某些数据库可能接受单引号,但单引号应仅保留给文字字符串。为数据库使用正确的引号字符(在SQLite中,最好使用双引号),或者最好使用不需要引号的标识符