SQL SERVER中PERCENTILE_CONT和PERCENTILE_DISC

PERCENTILE_CONT和PERCENTILE_DISC


看下面一组SQL语句:

WITH test
as
(select N'LeeWhoeeUniversity' as name,10 as scoreUNION ALLselect N'LeeWhoeeUniversity',20UNION ALLselect N'LeeWhoeeUniversity',30UNION ALLselect N'LeeWhoeeUniversity',40UNION ALLselect N'LeeWhoeeUniversity',50UNION ALLselect N'DePaul',60UNION ALLselect N'DePaul',70UNION ALLselect N'DePaul',80UNION ALLselect N'DePaul',90UNION ALLselect N'DePaul',100
)
select name,score
,PERCENT_RANK() over(partition by name order by score) as per_rnk
,PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY score) over(partition by name) as percont0_5
,PERCENTILE_CONT(0.6) WITHIN GROUP (ORDER BY score) over(partition by name) as percont0_6
,PERCENTILE_CONT(0.7) WITHIN GROUP (ORDER BY score) over(partition by name) as percont0_7
,PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY score) over(partition by name) as percont0_75
,PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY score) over(partition by name) as perdist0_5
,PERCENTILE_DISC(0.6) WITHIN GROUP (ORDER BY score) over(partition by name) as perdist0_6
,PERCENTILE_DISC(0.7) WITHIN GROUP (ORDER BY score) over(partition by name) as perdist0_7
,PERCENTILE_DISC(0.75) WITHIN GROUP (ORDER BY score) over(partition by name) as perdist0_75
from test

运行结果:

name                          score    per_rnk    percont0_5    percont0_6    percont0_7    percont0_75    perdist0_5    perdist0_6    perdist0_7    perdist0_75
LeeWhoeeUniversity    10           0                 30                       34                     38                        40                     30                 30                  40                       40
LeeWhoeeUniversity    20           0.25           30                       34                      38                       40                      30                30                   40                       40
LeeWhoeeUniversity    30           0.5              30                       34                      38                       40                      30                30                   40                       40
LeeWhoeeUniversity    40           0.75            30                       34                      38                      40                        30               30                   40                       40
LeeWhoeeUniversity    50           1                 30                       34                      38                       40                       30                30                   40                       40
DePaul                    60            0                80                       84                      88                       90                       80                80                   90                       90
DePaul                    70            0.25          80                        84                      88                      90                       80                 80                  90                       90
DePaul                    80            0.5             80                       84                      88                      90                       80                 80                  90                        90
DePaul                    90            0.75          80                        84                      88                      90                       80                 80                  90                       90
DePaul                  100           1                80                        84                       88                     90                        80                80                  90                        90

简单理解,PERCENT_RANK前面介绍过,求出score百分比后,PERCENTILE_CONT和PERCENTILE_DISC就是根据百分比求出对应的score。但不同的是,某一百分比没有对应的score时,PERCENTILE_CONT会根据百分比的偏差计算出一个新值,此值可能并不存在于score中。PERCENTILE_DISC得出的是偏向于最近百分比对应的score值,因此此值肯定存在于score中。

如PERCENTILE_CONT(0.6)对应的值为34,偏差值我猜测是这样计算出的:百分比75%和50%PERCENTILE_CONT计算出的值分别是40和30.那么等式:(40-30)/(0.75-0.5)=新偏差值/0.6-0.5。PERCENTILE_CONT(0.6)在50%上的偏差值=4。所以,PERCENTILE_CONT(0.6)对应PERCENTILE_CONT(0.5)+4=34。

再看PERCENTILE_DISC(0.6),直接将最近的0.5计算出的,PERCENTILE_DISC值取过来了。

SQL SERVER中PERCENTILE_CONT和PERCENTILE_DISC相关推荐

  1. percent sql_使用SQL Server中的PERCENT_RANK函数计算SQL百分位数

    percent sql This article explores the SQL Server PERCENT_RANK analytical function to calculate SQL P ...

  2. SQL Server中Identity标识列

    SQL Server中,经常会用到Identity标识列,这种自增长的字段操作起来的确是比较方便.但它有时还会带来一些麻烦. SQL Server中,经常会用到Identity标识列,这种自增长的字段 ...

  3. predicate 列存储索引扫描_在SQL SERVER中导致索引查找变成索引扫描的问题分析

    SQL Server 中什么情况会导致其执行计划从索引查找(Index Seek)变成索引扫描(Index Scan)呢? 下面从几个方面结合上下文具体场景做了下测试.总结.归纳. 1:隐式转换会导致 ...

  4. mysql2008 limit,在SQL Server中实现 Limit m, n 的功能

    在SQL Server中实现 Limit m, n 的功能 (2012-03-14 18:17:43) 标签: 杂谈 在MySQL中,可以用 Limit 来查询第 m 列到第 n列的记录,例如: se ...

  5. SQL Server中SELECT会真的阻塞SELECT吗?

    在SQL Server中,我们知道一个SELECT语句执行过程中只会申请一些意向共享锁(IS) 与共享锁(S), 例如我使用SQL Profile跟踪会话86执行SELECT * FROM dbo.T ...

  6. 将Session值储存于SQL Server中

    一般情况下,我们喜欢使用Session储存我们的变量.Asp.Net提供了下面一些方法储存Session的值: InProc State Server SQL Server "InProc& ...

  7. 在SQL Server中保存和输出任意类型的文件

    我们可以把任意类型的文件保存到SQL Server中,在进行例子之前,先建立测试用表格,TestFile.sql: if exists (select * from dbo.sysobjects wh ...

  8. SQL SERVER中什么情况会导致索引查找变成索引扫描

    原文:SQL SERVER中什么情况会导致索引查找变成索引扫描 SQL Server 中什么情况会导致其执行计划从索引查找(Index Seek)变成索引扫描(Index Scan)呢? 下面从几个方 ...

  9. SQL Server中读取XML文件的简单做法

    SQL Server 2000使得以XML导出数据变得更加简单,但在SQL Server 2000中导入XML数据并对其进行处理则有些麻烦.本文介绍在SQL Server中读取XML文件的简单做法. ...

最新文章

  1. scrollLeft,scrollWidth,clientWidth,offsetWidth到底指的哪到哪的距离
  2. 【Java】面试官灵魂拷问:if语句执行完else语句真的不会再执行吗?
  3. pycharm 如何设置文件头信息?信息模板 头文件 coding: utf-8
  4. 事务的传播性和隔离级别
  5. C++函数概念解析(1)
  6. Python接口自动化之接口依赖
  7. go使用mongodb
  8. css 纯颜色叠加,CSS颜色叠加
  9. 自然语言处理怎么最快入门
  10. 20220705开发板BL602的SDK编译以及刷机
  11. 解决win10桌面管理器内存泄漏问题
  12. docker pdf 中文版 linux,Docker入门实战手册PDF
  13. 大麦网首开客户分享会:没有吃喝 纯聊天
  14. java祖玛_Canvas小练习_祖玛游戏01
  15. oracle utl inaddr,Oracle包utl_inaddr
  16. 我来说说这几天经历的南宁传销!慢慢更!
  17. 从java环境配置到成功使用VOSviewer
  18. i9500android操作系统跑流量,四大手机安全软件谁更省流量?360手机卫士完胜
  19. java 23_《分布式JAVA应用 基础与实践》 第三章 3.2 JVM内存管理(三)
  20. 虚拟魔方——使用python对普通三阶魔方进行建模

热门文章

  1. 如何保持积极的心态?
  2. Dialect needs to be explicitly supplied as of v4.0.0解决方案
  3. 单点登录cas-4.0.0 只是简单的同时登入,同时登出功能
  4. python绘制气象等值线图_气象要素场等值线图自动绘制
  5. 论文介绍《CrowdFormer: An Overlap Patching Vision Transformer for Top-Down Crowd Counting 》
  6. 对卡巴斯基发现的一个将shellcode写入evenlog的植入物的复现
  7. String类中getBytes()方法的使用
  8. Pix2Text (P2T) 新版发布,离Mathpix又近了一大步
  9. 色温,色阶,色调,色调
  10. 绝世舞姬计算机弹音乐,绝世舞姬(伴奏)