select 和count 的有关问题
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
------解决方案--------------------
我想知道张三和李四对战了3盘还是6盘,因为上面的数据太巧了,每次张三赢李四,总有一条李四输张三,时间也一致。
如果对战了3盘。
------解决方案--------------------
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 [玩家]
如下表。
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
------解决方案--------------------
我想知道张三和李四对战了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 [玩家]