开发者社区> 问答> 正文

最佳实践 -SQL Server -解析SQL Server 2012常用的分析函数



分析函数CUME_DIST


微软的定义:
计算某个值在SQL Server 2012中的一组值内的累积分布。CUME_DIST计算某指定值在一组值中的相对位置。对于行r,假定采用升序,r的CUME_DIST是值低于或等于r的值的行数除以在分区或查询结果集中求出的行数。
函数解析:
执行如下代码,构造一组数据。

  1. DECLARE
  2.     @analytic TABLE(
  3.         name varchar(35) ,
  4.         dept varchar(35),
  5.         salary money
  6.     )
  7. INSERT INTO @analytic
  8.         VALUES
  9. --bd
  10. ('andy01','bd',15000),
  11. ('andy02','bd',12000),
  12. ('andy03','bd',12000),
  13. ('andy04','bd',10000),
  14. ('andy05','bd',8000),
  15. --ca
  16. ('andy06','ca',20000),
  17. ('andy07','ca',18000),
  18. ('andy08','ca',18000),
  19. ('andy09','ca',15000),
  20. ('andy10','ca',12000),
  21. ('andy11','ca',12000),
  22. ('andy12','ca',10000),
  23. ('andy13','ca',8000),
  24. ('andy14','ca',8000),
  25. ('andy15','ca',8000)
  26. SELECT
  27.     dept,name ,salary,
  28.     CUME_DIST() OVER(PARTITION BY dept ORDER BY salary)  AS cume_dist_
  29. FROM @analytic
  30. ORDER BY dept,salary DESC

返回结果如下:
[url=http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/67532/cn_zh/1519810205856/CUME_DIST%E8%BF%94%E5%9B%9E%E7%BB%93%E6%9E%9C.png][/url]
示例分析:
按照dept分区,根据salary排序,比较当前记录和后一条记录(偏移量为1)的salary值的差值,这个非常实用。

展开
收起
梨好橙 2018-09-09 23:12:27 1305 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像