我第一眼看到的似乎是简单的SQL查询:)
所以我有下面的表有三列:PlayerId,Gender,Result(所有类型为整数)。
我正在尝试做的是选择性别2(男性)的不同玩家,每个结果的数量。 大约有50个可能的结果,因此新表应该有51列:
| PlayerId | 1 | 2 | 3 | ...... | 50 |
所以我想看看每个男性(性别2)玩家获得特定结果的次数。
***如果你的问题仍然不完全清楚:每场比赛结束后,我会在该游戏中插入一个玩家ID,性别和结果(从1到50)玩家的行。现在我想看看每个玩家获得特定结果的次数。
答案 0 :(得分:2)
如果有50个结果并且您希望它们在列中,那么您正在谈论一个支点。我倾向于使用条件聚合来做这些:
select player,
sum(case when result = 0 then 1 else 0 end) as result_00,
sum(case when result = 1 then 1 else 0 end) as result_01,
. . .
sum(case when result = 50 then 1 else 0 end) as result_50
from t
group by player;
如果您愿意,可以使用where gender = 2
选择特定的性别。但为什么不同时计算所有?
答案 1 :(得分:1)
尝试
select player, result, count(*)
from your_table
where Gender = 2
group by player, result;
答案 2 :(得分:0)
select PleyerId from tablename where result = 'specific result you want' and gender = 2 group by PleyerId
答案 3 :(得分:0)
最简单的方法是使用透视:
;with cte as(Select * from t
Where gender = 2)
Select * from cte
Pivot(count(gender) for result in([1],[2],[3],....,[50]))p
小提琴http://sqlfiddle.com/#!3/8dad5/3
一个注意事项:将性别保持在分数表中是一个坏主意。最好为玩家制作一个单独的桌子并保持性别。