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表
展开
 我来答
kas68310
2011-12-01 · TA获得超过3638个赞
知道大有可为答主
回答量:1468
采纳率:33%
帮助的人:1184万
展开全部
select userid1,count(id) vcnt
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,胜利者
再对胜利者进行汇总,过滤平局
不想起名字了2333
2011-12-01 · TA获得超过2447个赞
知道大有可为答主
回答量:1931
采纳率:50%
帮助的人:1862万
展开全部
score1 > score2 就表示 胜利次数>0 ; count(*) 计算数目
select userid1, userid2, count(id)
from tableName
where score1 > score2
group by userid1, userid2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
guduhuangyu
2011-12-01
知道答主
回答量:16
采纳率:0%
帮助的人:10.1万
展开全部
select SUM(
Case When score1=score2 then 0
else 1
end
) AS '胜利次数'
from 表
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式