ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【SQL 学习】一个面试题

【SQL 学习】一个面试题

Linux操作系统 作者:曾祥楚 时间:2018-04-01 09:20:11 0 删除 编辑

今天面试的时候,问了一个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                         97                                     

SQL> 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                                     

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31529441/viewspace-2152469/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 如何找实习工作
请登录后发表评论 登录
全部评论

注册时间:2018-04-01

  • 博文量
    4
  • 访问量
    1365