本文共 1600 字,大约阅读时间需要 5 分钟。
今天面试的时候,问了一个sql编写的题目, 求每门成绩的最高分数的id 以及科目,分数。(当时没有写好,郁闷了,面试官还是很好的,给我讲解了一下!)回到宿舍自己有写了一下,两个方法:
SQL> create table test (id int ,subject varchar2(20), score int);
表已创建。 SQL> insert into test values(1 ,'math',95); 已创建 1 行。 SQL> insert into test values(2 ,'math',92); 已创建 1 行。 SQL> insert into test values(3 ,'math',97); 已创建 1 行。 SQL> insert into test values(3 ,'english',97); 已创建 1 行。 SQL> insert into test values(3 ,'chiness',79); 已创建 1 行。 SQL> insert into test values(1,'chiness',79); 已创建 1 行。 SQL> insert into test values(2,'chiness',89); 已创建 1 行。 SQL> insert into test values(1,'english',96); 已创建 1 行。 SQL> insert into test values(2,'english',86); 已创建 1 行。 SQL> commit; 提交完成。 SQL> select * from test;ID SUBJECT SCORE
---------- -------------------- ---------- 1 math 95 2 math 92 3 math 97 3 english 97 3 chiness 79 1 chiness 79 2 chiness 89 1 english 96 2 english 86已选择9行。
SQL> select id ,subject,score from
2 (select id ,subject,score,row_number() over (partition by subject 3 order by score desc ) rn from test ) 4 where rn=1;ID SUBJECT SCORE
---------- -------------------- ---------- 2 chiness 89 3 english 97 3 math 97SQL> select id ,subject,score from
2 test t3 ,(select max(score) sco from test group by subject) t4 3 where t4.sco=t3.score;ID SUBJECT SCORE
---------- -------------------- ---------- 3 english 97 3 math 97 3 english 97 3 math 97 2 chiness 89 SQL> select distinct id ,subject,score from 2 test t3 ,(select max(score) sco from test group by subject) t4 3 where t4.sco=t3.score ;ID SUBJECT SCORE
---------- -------------------- ---------- 3 english 97 3 math 97 2 chiness 89转载地址:http://hprnl.baihongyu.com/