`
遵化人在北京
  • 浏览: 5751 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

面试sql题

阅读更多
中软面试的一个sql题。
题目:

1、每个科目的最高分。
2、java成绩最高的姓名
3、java成绩第二高的姓名

第一个没什么好说的。
对第二题和第三题,取得成绩可能有多的。可以使用分析函数。DENSE_RANK
SELECT t.name,
       t.kemu,
       t.score,
       DENSE_RANK() OVER (PARTITION BY t.kemu ORDER BY t.score) seq
  FROM ke_chengji t;
  • 大小: 2.3 KB
0
2
分享到:
评论
2 楼 click_guobin 2011-04-14  
1 楼 chwshuang 2010-12-26  
我用MySQL测试的:

1.每个科目的最高分:
SELECT kemu,max(score) FROM table GROUP BY kemu;
    分析:找出成绩最高的人后,根据科目分组就可以得到每组的最高分的人。

2.java成绩最高的姓名:
SELECT name FROM table WHERE kemu='java' and
score=(SELECT max(score) FROM table WHERE kemu='java');

    分析:从表格中查询名称时,提出两点条件1.科目是java,2.科目是java的最高分
     如果是名字和分数都要的话就很简单了直接打出:
     SELECT name,max(cj) AS max_cj FROM table WHERE kemu='java';

3.java成绩第二高的姓名:
SELECT name FROM table WHERE kemu='java' GROUP BY name
ORDER BY cj DESC LIMIT 1,1;

    分析:在查询姓名时根据kemu='java' 这个条件,然后根据姓名分组,然后根据成绩排序,最后在列表中根据TOP 方法 LIMIT 选取从0开始的第二个姓名,只取1个人。OK了!

相关推荐

Global site tag (gtag.js) - Google Analytics