日期:2014-05-17  浏览次数:20888 次

select 和count 的问题。

如下表。

ID 玩家 结果 对手 时间
1 张三 胜利 李四 2014/1/20
2 张三 胜利 李四 2014/1/21
3 李四 失败 张三 2014/1/20
4 李四 失败 张三 2014/1/21
5 李四 胜利 张三 2014/1/19
6 张三 失败 李四 2014/1/19

select 字段

玩家   胜利局数   失败局数  总局数



sql 语句 里面 ,不像是 excel 没有countif 吧?怎么做呢??


------解决方案--------------------
select name,count(总胜利),count(总失败),count(总胜利)+count(总失败) as 总局数
(select name,count(result) as 总胜利 from table where result=胜利 group by name
join
select name,count(result) as 总失败 from table where result=失败 group by name
on(...))
大概的这样你测试测试真实SQL

------解决方案--------------------
引用
ID 玩家 结果 对手 时间
1 张三 胜利 李四 2014/1/20
2 张三 胜利 李四 2014/1/21
3 李四 失败 张三 2014/1/20
4 李四 失败 张三 2014/1/21
5 李四 胜利 张三 2014/1/19
6 张三 失败 李四 2014/1/19

我想知道张三和李四对战了3盘还是6盘,因为上面的数据太巧了,每次张三赢李四,总有一条李四输张三,时间也一致。

如果对战了3盘。

select t1.玩家,胜利局数,失败局数,(胜利局数+失败局数) as 总局数  from 
(select 玩家,COUNT(结果) as 胜利局数 from PlayRst where 结果='胜利' group by 玩家)t1 
join 
(select 玩家,COUNT(结果) as 失败局数 from PlayRst where 结果='失败' group by 玩家)t2 
on t1.玩家 = t2.玩家

------解决方案--------------------
select [玩家],
sum(
case [结果] when '胜利' then
1
else
   0
end) as [胜利局数],
sum(
case [结果] when '失败' then
1
else
   0
end) as [失败局数],
count(1) as [总局数]
From [记录表] Group by [玩家]