首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

select 和count 的有关问题

2014-01-22 
select 和count 的问题。如下表。ID玩家结果对手时间1张三胜利李四2014/1/202张三胜利李四2014/1/213李四失

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 [玩家]

热点排行