博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
也做SQL查询:班级总成绩 前三名,总成绩有相等的情况
阅读量:5900 次
发布时间:2019-06-19

本文共 642 字,大约阅读时间需要 2 分钟。

刚刚看到一篇博客,原帖链接:

 

通常想到子查询或者临时表外加聚合函数都是没错的,但是真写起来发现SQL语句比较不那么人道,阅读体验不好。追求优雅的Coder通常一看到是SQL Server 2005+,条件反射地想到和公用表表达式CTE。一种SQL查询实现如下:

1
2
3
4
5
6
7
8
9
10
11
WITH 
ScoreInfo
AS 
(
SELECT 
[Student_No], [Student_Name],[Chinese],[Math],[English],[totalScore]
      
,DENSE_RANK() OVER(
ORDER 
BY 
totalScore
DESC
)
AS 
'名次'
  
FROM 
[Record] )
   
SELECT 
CASE 
名次 
WHEN 
1
THEN 
'第一名'
                  
WHEN 
2
THEN 
'第二名'
                  
WHEN 
3
THEN 
'第三名'
                  
END 
AS 
'排名'
,
[Student_No], [Student_Name],[Chinese],[Math],[English],[totalScore]
FROM 
ScoreInfo
WHERE  
名次<4
--取前三名

这样的SQL可读性是不是立刻变得简洁鲜明一目了然?

本文转自JeffWong博客园博客,原文链接:http://www.cnblogs.com/jeffwongishandsome/archive/2012/11/07/2759485.html,如需转载请自行联系原作者

你可能感兴趣的文章