1. -- 开窗函数:在结果集的基础上进一步处理(聚合操作)
  2.  
  3. -- Over函数,添加一个字段显示最大年龄
  4. SELECT * ,
  5. MAX(StuAge) OVER ( ) MaxStuAge
  6. FROM dbo.Student;
  7.  
  8. -- Over函数,添加一个字段显示总人数
  9. SELECT * ,
  10. COUNT(StuID) OVER ( ) StuCount
  11. FROM dbo.Student;
  12.  
  13. -- Partition By 分组统计数量
  14. -- 根据性别分组后,统计
  15. SELECT COUNT(*) OVER ( PARTITION BY StuSex ) ,
  16. *
  17. FROM dbo.Student;
  18.  
  19. -- 根据班级分组后,统计、排序
  20. SELECT COUNT(*) OVER ( PARTITION BY Class ORDER BY Height) ,
  21. *
  22. FROM dbo.Student;
  23.  
  24. -- Over函数,添加一个字段显示平均身高
  25. SELECT * ,
  26. AVG(Height) OVER ( ) AgeHeight
  27. FROM dbo.Student;
  28.  
  29. --Row_Rumber()
  30. SELECT ROW_NUMBER() OVER ( ORDER BY StuID DESC ) RowNumber ,
  31. *
  32. FROM dbo.Student
  33.  
  34. --Row_Rumber() 实现分页效果
  35. ;
  36. WITH T AS ( SELECT ROW_NUMBER() OVER ( ORDER BY StuID DESC ) RowNumber ,
  37. *
  38. FROM dbo.Student
  39. )
  40. SELECT *
  41. FROM T
  42. WHERE T.RowNumber BETWEEN 1 AND 3;
  43.  
  44. --Rank() 排名函数,名次相同,跳过
  45. SELECT RANK() OVER ( ORDER BY Height ) ,
  46. *
  47. FROM dbo.Student;
  48.  
  49. --DENSE_Rank() 排名函数,名次相同不跳过
  50. SELECT DENSE_RANK() OVER ( ORDER BY Height ) ,
  51. *
  52. FROM dbo.Student;
  53.  
  54. -- NTILE()函数,参数:记录总数/划分区域 = 每个区域数组,把记录序号放进数组 (平均分组)
  55. SELECT NTILE(3) OVER ( ORDER BY StuSex ) ,
  56. *
  57. FROM dbo.Student;

  

版权声明:本文为i-shanghai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/i-shanghai/archive/2017/01/26/6351346.html