求查询语句

panda6174 2012-10-31 11:49:35
有如下表(students):
课程 姓名 班级 成绩
课程1 张三 三年级1班 69
课程2 张三 三年级1班 90
课程3 张三 三年级1班 87
课程1 李四 三年级1班 88
课程2 李四 三年级1班 78
课程3 李四 三年级1班 76
课程1 王二 三年级1班 65
课程2 王二 三年级1班 86
课程3 王二 三年级1班 90

希望查询各课程最高分的记录,查询结果如下:
课程1 李四 三年级1班 88
课程2 张三 三年级1班 90
课程3 王二 三年级1班 90

求对应的SQL语句。

另外我想知道总共有多少门课程的SQL语句是什么?如上表结果应为3。
...全文
201 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
土豆番茄 2014-03-26
  • 打赏
  • 举报
回复
三楼正解,顶三楼
WSZHAO_SELECT 2014-03-25
  • 打赏
  • 举报
回复

create table students(
kc varchar2(20),
xm varchar2(20),
bj varchar2(20),
cj int
);
insert into students values('课程1','张三','三年级1班',69);
insert into students values('课程2','张三','三年级1班',90);
insert into students values('课程3','张三','三年级1班',87);
insert into students values('课程1','李四','三年级1班',88);
insert into students values('课程2','李四','三年级1班',78);
insert into students values('课程3','李四','三年级1班',76);
insert into students values('课程1','王五','三年级1班',65);
insert into students values('课程2','王五','三年级1班',86);
insert into students values('课程3','王五','三年级1班',90);




select count(distinct kc) as 总课程数 from students;



select st_1.kc as "课程",st_1.xm as "姓名",st_1.bj as "年级",st_1.cj as "最高分" from students st_1
join( select kc,max(cj) max_cj from students group by kc) st
on(st_1.cj=st.max_cj and st_1.kc=st.kc)

  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

SQL code
SELECT COUNT(DISTINCT 课程) FROM STUDENTS
[/Quote]

2L的是正解,总共有多少门课程的sql
  • 打赏
  • 举报
回复

select 课程,姓名,班级,max(成绩) over(partition by 课程) 成绩 from students
wangpengpengwang 2012-11-01
  • 打赏
  • 举报
回复
5楼的SQL是我第一反应想写的,支持一下。
wangchangming 2012-10-31
  • 打赏
  • 举报
回复
SELECT COUNT(DISTINCT 课程) FROM STUDENTS
wangchangming 2012-10-31
  • 打赏
  • 举报
回复
SELECT * FROM students WHERE EXISTS(
SELECT NULL FROM (SELECT 课程,MAX(成绩) over(PARTITION BY 课程) 成绩 FROM STUDENTS) A
WHERE A. 课程 = STUDENTS.课程
AND A.成绩 = STUDENTS.成绩)
筱伟 2012-10-31
  • 打赏
  • 举报
回复
select b.* from students b,(select 课程,max(成绩) 成绩 from students group by 课程) a where a.课程=b.课程 and a.成绩=b.成绩
select count(*) from (select distinct 课程 from students)
小海葵1 2012-10-31
  • 打赏
  • 举报
回复

SELECT KC,XM,BJ,CJ FROM (
SELECT ROW_NUMBER()OVER(PARTITION BY KC ORDER BY CJ DESC) AS RN,KC,XM,BJ,CJ FROM TEST) WHERE RN = 1

KC,XM,BJ,CJ
课程 姓名 班级 成绩

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧