还是问一个mysql的查询汇总的汇总问题

WBOY
풀어 주다: 2016-06-23 14:39:48
원래의
1068명이 탐색했습니다.

本帖最后由 setoy 于 2013-12-18 18:11:02 编辑

有五个人,uid分别是1~5
有对着这五个人打分的表格(某个人有可能没有得到过分数)
id  uid  scroe-------------1    1    1.52    1    1.83    2    -5.54    1    0.85    2    8.26    1    -27    4    38    2    2.3--------------
로그인 후 복사


现在要统计他们所有人的分数,即使查询不到某个人的得分,也要显示0分,显示格式如下:
用户  分数   汇总分-----------------------1      1.5     2.11      1.8     2.11      0.8     2.11      -2      2.12      -5.5    52      8.2     52      2.3     53      0       04      3       35      0       0
로그인 후 복사


回复讨论(解决方案)

不知道楼主想要问什么

怎么得到第二张表,mysql语句怎么写?

建表:

CREATE TABLE a	(`id` int, `uid` int, `scroe` float);	INSERT INTO a	(`id`, `uid`, `scroe`)VALUES	(1, 1, 1.5),	(2, 1, 1.8),	(3, 2, -5.5),	(4, 1, 0.8),	(5, 2, 8.2),	(6, 1, -2),	(7, 4, 3),	(8, 2, 2.3);
로그인 후 복사

问题是你数据集里都没uid=3和uid=5的纪录。参考

select t.*,round(s.scroe,1) as scroe , round(if(s.total is null,0,s.total),1) as summary from (select 1 as uid union select 2 as uidunionselect 3 as uid union select 4 as uidunion select 5 as uid) t left join (select uid,scroe,(select sum(scroe) from a where uid=aa.uid group by uid) as total from a as aa) son s.uid = t.uid
로그인 후 복사

问题是你数据集里都没uid=3和uid=5的纪录。

uid是和user表里管理的字段,根据user表里的记录来读取:
在这里: http://bbs.csdn.net/topics/390673185


用户表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

结果

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿