还是问一个mysql的查询汇总的汇总问题
本帖最后由 setoy 于 2013-12-18 18:11:02 编辑
有五个人,uid分别是1~5
有对着这五个人打分的表格(某个人有可能没有得到过分数)
id uid scroe<br />-------------<br />1 1 1.5<br />2 1 1.8<br />3 2 -5.5<br />4 1 0.8<br />5 2 8.2<br />6 1 -2<br />7 4 3<br />8 2 2.3<br />--------------
现在要统计他们所有人的分数,即使查询不到某个人的得分,也要显示0分,显示格式如下:
用户 分数 汇总分<br />-----------------------<br />1 1.5 2.1<br />1 1.8 2.1<br />1 0.8 2.1<br />1 -2 2.1<br />2 -5.5 5<br />2 8.2 5<br />2 2.3 5<br />3 0 0<br />4 3 3<br />5 0 0<br />
分享到: 更多
——解决方案——————–
问题是你数据集里都没uid=3和uid=5的纪录。参考
select t.*,round(s.scroe,1) as scroe , round(if(s.total is null,0,s.to<i>·本2文来源gaodai$ma#com搞$代*码网2</i><strong>搞gaodaima代码</strong>tal),1) as summary from <br />(select 1 as uid <br />union <br />select 2 as uid<br />union<br />select 3 as uid <br />union <br />select 4 as uid<br />union <br />select 5 as uid) t left join <br />(select uid,scroe,(select sum(scroe) from a where uid=aa.uid group by uid) as total from a as aa) s<br />on s.uid = t.uid
——解决方案——————–
用户表tu
得分表t
SQL:SELECT tu.uid,t.score,a.total from test t right join test_user tu on tu.uid=t.uid left join (SELECT uid,sum(score) as total from test group by uid) a on a.uid=t.uid order by tu.uid
结果
搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:还是问一个mysql的查询汇总的汇总有关问题
转载请注明原文链接:还是问一个mysql的查询汇总的汇总有关问题
