Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.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
Android 计算多个值的出现次数_Android_Sql_Database_Sqlite - Fatal编程技术网

Android 计算多个值的出现次数

Android 计算多个值的出现次数,android,sql,database,sqlite,Android,Sql,Database,Sqlite,我在SQLLite数据库中有这样一个表。Name1是玩家1的名字,与name2相同,winner表示哪个玩家赢了,比如第一排,JOE赢了 我想得到一个特定球员的所有对手的名字,该球员对该球员的获胜次数,以及他们打了多少场比赛 例如,JOE的输出: 表格游戏中的数据: 下面是一种使用聚合和case语句的方法。计算每场比赛的赢家有点棘手,因为赢家指的是name1或name2列。您似乎希望对手获胜,因此此逻辑确保胜利者不是指乔: 下面是一种使用聚合和case语句的方法。计算每场比赛的赢家有点棘手,因为

我在SQLLite数据库中有这样一个表。Name1是玩家1的名字,与name2相同,winner表示哪个玩家赢了,比如第一排,JOE赢了

我想得到一个特定球员的所有对手的名字,该球员对该球员的获胜次数,以及他们打了多少场比赛

例如,JOE的输出:

表格游戏中的数据:


下面是一种使用聚合和case语句的方法。计算每场比赛的赢家有点棘手,因为赢家指的是name1或name2列。您似乎希望对手获胜,因此此逻辑确保胜利者不是指乔:


下面是一种使用聚合和case语句的方法。计算每场比赛的赢家有点棘手,因为赢家指的是name1或name2列。您似乎希望对手获胜,因此此逻辑确保胜利者不是指乔:


谢谢,它很有效。我想让乔赢,不是让对手赢,但是你的代码很容易修改。谢谢,这很有效。我想让乔赢,不是让对手赢,但你的密码很容易改变。 name wins games ---------------------- BILL 1 2 (JOE played againts BILL 2 times and JOE won 1) NICK 2 2 GREG 1 3 (JOE played againts GREG 3 times and JOE won 1)
SELECT name2 FROM games WHERE name1="JOE"
UNION
SELECT name11 FROM games WHERE name2="JOE"
id name1 name2 winner ---------------------------------------- 1 JOE BILL 1 2 BILL JOE 1 3 NICK JOE 2 4 JOE NICK 1 5 NICK BILL 1 6 GREG JOE 1 7 GREG JOE 2 8 GREG JOE 1
select (case when name1 = 'JOE' then name2 else name1 end) as name,
       sum(case when name1 = 'JOE' and winner = 2 then 1
                when name2 = 'JOE' and winner = 1 then 1
                else 0
           end) as wins,
       count(*) as games
from games g
where 'JOE' in (name1, name2)
group by (case when name1 = 'JOE' then name2 else name1 end);