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