sql语句问题?
字段:id(主键),userId1,userId2,score1,score2score1是userId1的得分,score2是userId2的得分,score1>sco...
字段:id(主键),userId1,userId2,score1,score2
score1是userId1的得分,score2是userId2的得分,score1>score2就是user1胜利了,请问如何返回“胜利次数>0的所有用户的数目”呢,
不更改表结构
那如果是userid2赢了呢,就是score1<score2的时候,也要考虑这个情况呀,而且用户有可能会有多条记录,需要去掉重复的
可能说的不是很清楚,需要返回的是胜利过的用户总数
假使这个表的名字叫做game表 展开
score1是userId1的得分,score2是userId2的得分,score1>score2就是user1胜利了,请问如何返回“胜利次数>0的所有用户的数目”呢,
不更改表结构
那如果是userid2赢了呢,就是score1<score2的时候,也要考虑这个情况呀,而且用户有可能会有多条记录,需要去掉重复的
可能说的不是很清楚,需要返回的是胜利过的用户总数
假使这个表的名字叫做game表 展开
展开全部
select userid1,count(id) vcnt
from 表
where score1>score2
group by userId1
---------
先排除失败的,那剩下的就是胜利的,聚合下行数就是胜利次数.
不过这里只对userid1做了分析,如果score1<score2算user2胜利的话,就得先转换一下再做了.
from 表
where score1>score2
group by userId1
---------
先排除失败的,那剩下的就是胜利的,聚合下行数就是胜利次数.
不过这里只对userid1做了分析,如果score1<score2算user2胜利的话,就得先转换一下再做了.
更多追问追答
追问
晕,那如果是userid2赢了呢,就是score1<score2的时候,也要考虑这个情况呀
追答
所以我问你了啊.
select vuser,count(id)vcnt
from(select id,
case when score1>score2 then userid1 when score1-1
group by vuser
-------
先转换一次,把行转为:id,胜利者
再对胜利者进行汇总,过滤平局
展开全部
score1 > score2 就表示 胜利次数>0 ; count(*) 计算数目
select userid1, userid2, count(id)
from tableName
where score1 > score2
group by userid1, userid2
select userid1, userid2, count(id)
from tableName
where score1 > score2
group by userid1, userid2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select SUM(
Case When score1=score2 then 0
else 1
end
) AS '胜利次数'
from 表
Case When score1=score2 then 0
else 1
end
) AS '胜利次数'
from 表
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询