试写一个SQL语句,查询出各科成绩最高分的同学(包括学生号,科目与成绩)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了试写一个SQL语句,查询出各科成绩最高分的同学(包括学生号,科目与成绩)相关的知识,希望对你有一定的参考价值。
参考技术A 建立一个表USE [test]
GO
/****** 对象: Table [dbo].[student] 脚本日期: 10/17/2010 13:23:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[student](
[id] [int] NULL,
[name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[course] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[score] [int] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
select id,course,score from student where id in (select id from student where score in (select max(score) from student group by course)) 参考技术B select 学生号 ,科目 ,成绩 max(成绩)
from 要查的表
group by 科目
注: max(成绩)是成绩 的别名 我把成绩当作最高成绩来做了 参考技术C 可以用 select top 1 * from 表 order by 成绩 desc
也可以用 select * from 表 where 成绩=(select max(成绩) from 表) 参考技术D select top 10 学生号列,成绩列,科目列 from 表 where 科目列=科目 order by id desc,成绩 desc
某个科目的前面最高分的10位同学
以此类推。。。。。要查哪个科目就改下科目就行了
SQL语句练习查询平均成绩最高的前3名同学
题目
查询平均成绩最高的前3名同学的学号,姓名,性别及年龄,平均成绩。
数据表
CREATE TABLE `stu` (
`sno` char(4) NOT NULL,
`sname` char(8) NOT NULL,
`sex` tinyint(1) DEFAULT NULL,
`mno` char(2) DEFAULT NULL,
`birdate` datetime DEFAULT NULL,
`memo` text,
PRIMARY KEY (`sno`)
);
CREATE TABLE `sc` (
`sno` char(4) NOT NULL,
`cno` char(4) NOT NULL,
`grade` decimal(6,1) DEFAULT NULL,
PRIMARY KEY (`sno`,`cno`),
CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`)
);
解题思路
先查询每个学生的平均成绩,再选出前三名作为子表a
。然后再用stu
表与子表a
内连接。
select stu.sno 学号,stu.sname 姓名,stu.sex 性别,year(now())-year(stu.birdate) 年龄,grade 平均成绩 from stu
inner join
(
select stu.sno ,avg(grade) grade from stu
inner join sc on sc.sno=stu.sno
group by stu.sno
order by grade desc
limit 3
) a
on stu.sno=a.sno
以上是关于试写一个SQL语句,查询出各科成绩最高分的同学(包括学生号,科目与成绩)的主要内容,如果未能解决你的问题,请参考以下文章
SQL语句查询每个学生的学号、姓名、平均成绩、最高成绩和最低成绩
查询每门课成绩最高分的同学的sql语句,输出课程名,姓名,学号,分数。表的结构如下。写出完整的sql语句