注册 登录
编程论坛 SQL Server论坛

sqlserver 查询的问题

chen8919043 发布于 2010-08-18 17:49, 1286 次点击
sqlserver 列出各班级中总分最高的学生

二班 李3 72
二班 李3 67
二班 李3 53
二班 李3 83
二班 李3 76
二班 李3 86
二班 1四 72
二班 1四 59
二班 1四 90
二班 1四 81
二班 1四 86
二班 1四 75
二班 李四 81
二班 李四 50
二班 李四 61
二班 李四 52
二班 李四 70
二班 李四 81
六班 刘2 72
六班 刘2 55
六班 刘2 71
六班 刘2 46
六班 刘2 83
六班 刘2 52
六班 刘二 74
六班 刘二 65
六班 刘二 80
六班 刘二 92
六班 刘二 70
六班 刘二 99
三班 王武 82
三班 王武 60
三班 王武 50
三班 王武 82
三班 王武 70
三班 王武 95
三班 3武 72
三班 3武 79
三班 3武 75
三班 3武 79
三班 3武 58
三班 3武 68
三班 王5 72
三班 王5 67
三班 王5 53
三班 王5 45
三班 王5 57
三班 王5 69
四班 赵6 72
四班 赵6 72
四班 赵6 75
四班 赵6 58
四班 赵6 96
四班 赵6 43
四班 赵六 84
四班 赵六 50
四班 赵六 70
四班 赵六 92
四班 赵六 70
四班 赵六 85
五班 陈九 50
五班 陈九 90
五班 陈九 80
五班 陈九 76
五班 陈九 54
五班 陈九 98
五班 陈9 72
五班 陈9 78
五班 陈9 79
五班 陈9 55
五班 陈9 97
五班 陈9 52
一班 张三 84
一班 张三 70
一班 张三 90
一班 张三 82
一班 张三 60
一班 张三 91
一班 张1 72
一班 张1 67
一班 张1 53
一班 张1 83
一班 张1 73
一班 张1 92
一班 2三 72
一班 2三 76
一班 2三 85
一班 2三 73
一班 2三 75
一班 2三 52


请问这个怎么判断出每个班总分最高的人????
12 回复
#2
gameohyes2010-08-18 23:49
感觉设计不合理.
最好加个班级表.那样的话更容易查询,筛选数据

[ 本帖最后由 gameohyes 于 2010-8-19 00:03 编辑 ]
#3
cnfarer2010-08-19 08:22
什么是总分最高的人数?是指并列第一的人数?
#4
红色警戒2010-08-19 09:07
先查询班级,然后再一个一个查询各班总分最高的
#5
chen89190432010-08-19 09:09
class_t(classid,classname)
       g1        一班
       g2        二班
       g3        三班
       ...       ...
student_t(studentid,studentname,classid)
       101 张三 g1
       102 李四 g2
       103 王武 g3
       ... ...  ...
course_t(courseid,coursename)
       s1     数学
       s2     英语
       s3     化学
       ...    ...  
score_t(studentid,courseid,score)
       101 s1 80  
       101 s2 70   
       101 s3 90   
       101 ...  ..  

列出各班级中总分最高的学生

这个是原题,谁能帮我看看啊
#6
tww1248499802010-08-19 16:36
SELECT class_t.classname, temp_t.studentname, temp_t.totalscore
FROM
    class_t INNER JOIN
        temp_t ON class_t.classid = temp_t.classid INNER JOIN
        (SELECT classid, MAX(totalscore) AS totalscore
    FROM
        (SELECT dbo.student_t.studentid, dbo.student_t.studentname, dbo.student_t.classid,
             SUM(ISNULL(dbo.score_t.score, 0)) AS totalscore
           FROM dbo.student_t LEFT OUTER JOIN
              dbo.score_t ON dbo.student_t.studentid = dbo.score_t.studentid
              GROUP BY dbo.student_t.studentid, dbo.student_t.studentname, dbo.student_t.classid)
    as temp_t
    GROUP BY classid)
as temp1_t
ON temp_t.classid = temp1_t.classid AND
temp_t.totalscore = temp1_t.totalscore
#7
yuanxl332010-08-20 02:27
看到6楼 我晕了
#8
luanyunfeng2010-08-20 10:20
首先此Table 的列名分别为class,name,num
首先查出每个学生的总分
Select sum(num) As New_num From Table
Group By Class,name
然后从这个查询中查出最大的数字嘛
Select max(New_num),class From
(Select sum(num) As New_num ,Class,name From Table
Group By Class,name)
Group By Class
Order by Class
#9
gameohyes2010-08-20 10:59
程序代码:
select * from
    (select classname,t2.studentname,max(t2.score) score from class_t cla,
    (select studentname,classid,t1.coursename,t1.score from student_t st,
    (select studentid,coursename,score from score_t sc,course_t co where sc.courseid=co.courseid) t1
        where t1.studentid=st.studentid) t2  where t2.classid=cla.classid
            group by classname,t2.studentname ) t3
        where t3.score in (select max(t2.score) score from class_t cla,
    (select studentname,classid,t1.coursename,t1.score from student_t st,
    (select studentid,coursename,score from score_t sc,course_t co where sc.courseid=co.courseid) t1
        where t1.studentid=st.studentid) t2  where t2.classid=cla.classid
            group by classname )
#10
dearwolf41282010-08-20 16:27
select top 1 * from 表 group by 班级 order by 分数 desc
#11
qingshuiliu2010-08-21 09:27
四表联合查询

#12
tww1248499802010-08-21 10:22
SELECT class_t.classname, t1.studentname, t1.totalscore
FROM
    class_t ,
    (SELECT student_t.studentid, studentname, classid, SUM(score) totalscore
           FROM student_t ,score_t
              WHERE student_t.studentid = score_t.studentid
              GROUP BY student_t.studentid, studentname, classid) t1,
    (SELECT classid, MAX(totalscore) totalscore
    FROM  
    (SELECT student_t.studentid, studentname, classid, SUM(score) totalscore
           FROM student_t ,score_t
              WHERE student_t.studentid = score_t.studentid
              GROUP BY student_t.studentid, studentname, classid) t1
    GROUP BY classid) t2
WHERE class_t.classid = t1.classid
AND t1.classid = t2.classid
AND t1.totalscore = t2.totalscore

上面的有点问题,这是改过的。
小弟初学,很多习惯还不是很好,有什么问题请各位多多指点。
#13
tww1248499802010-08-21 10:23
这个t1,上下两个是一样的,怎样才能不重写
1