刚刚看到一篇博客,原帖链接:http://www.cnblogs.com/HCCZX/archive/2012/11/07/2758036.html

 

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

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可读性是不是立刻变得简洁鲜明一目了然?

相关文章:

  • 2022-01-23
  • 2022-02-18
  • 2022-01-11
  • 2022-02-12
  • 2022-12-23
  • 2021-12-13
  • 2021-09-05
猜你喜欢
  • 2021-10-11
  • 2022-02-01
  • 2022-02-20
  • 2022-12-23
  • 2021-12-26
  • 2021-10-10
  • 2021-08-06
相关资源
相似解决方案