关闭

SQL Server 2012可编程性新特性_7_分析函数

2028人阅读 评论(0) 收藏 举报

SQL Server 2012 支持以下分析函数:CUME_DIST、PERCENT_RANK、FIRST_VALUE、LAST_VALUE、LAG、LEAD、PERCENTILE_CONT、PERCENTILE_DISC,用来基于一组行计算聚合值。不过,与聚合函数不同,它们可能针对每个组返回多行。 可以使用分析函数来计算移动平均线、运行总计、百分比或一个组内的前 N 个结果。

  • CUME_DIST( )与PERCENT_RANK( )
    CUME_DIST用来计算某个值在一组值内的累积分布,即在一组值中的相对位置。对于行 r,假定采用升序,r 的 CUME_DIST 是值低于或等于r 的值的行数除以在分区或查询结果集中求出的行数。PERCENT_RANK用来计算一组行内某行的相对排名,即计算一个值在查询结果集或分区中的相对位置。

    MSDN:http://msdn.microsoft.com/zh-cn/library/hh231078.aspx  & http://msdn.microsoft.com/zh-cn/library/hh213573.aspx
  • FIRST_VALUE()与LAST_VALUE()
    FIRST_VALUE()用来返回有序值集中的第一个值,而LAST_VALUE()则返回有序值集中的最后一个值。


    MSDN:http://msdn.microsoft.com/zh-cn/library/hh213018.aspx  &   http://msdn.microsoft.com/zh-cn/library/hh231517.aspx
  • LAG()与LEAD()
    LAG()用来访问相同结果集的先前行中的数据,而不使用 SQL Server 2012 中的自联接。LAG 以当前行之前的给定物理偏移量来提供对行的访问。 在 SELECT 语句中使用此分析函数可将当前行中的值与先前行中的值进行比较。

    LEAD()用来访问相同结果集的后续行中的数据,而不使用 SQL Server 2012 中的自联接。LEAD 以当前行之后的给定物理偏移量来提供对行的访问。 在 SELECT 语句中使用此分析函数可将当前行中的值与后续行中的值进行比较。



    MSDN:http://msdn.microsoft.com/zh-cn/library/hh231256.aspx  & http://msdn.microsoft.com/zh-cn/library/hh213125.aspx

  • PERCENTILE_CONT()与PERCENTILE_DISC()
    PERCENTILE_CONT()用来基于 SQL Server 2012 列值的连续分布计算百分位数。将内插结果,且结果可能不等于列中的任何特定值。
    PERCENTILE_DISC()用来计算 SQL Server 2012 中整个行集内或行集的非重复分区内已排序值的特定百分位数。对于给定的百分位数的值 P,PERCENTILE_DISC 对 ORDER BY 子句中表达式的值进行排序,并返回具有最小 CUME_DIST 值且大于或等于P 的值(遵照相同的排序规范)。 例如,PERCENTILE_DISC (0.5) 将计算表达式的第 50 百分位数(也即中值)。 PERCENTILE_DISC 基于列值的离散分布来计算百分位数;结果等于列中的一个特定值。
    注意:这两个函数可能不返回相同的值。 这是因为,PERCENTILE_CONT 内插适当的值,而无论它在数据集中是否存在,而 PERCENTILE_DISC 始终从数据集中返回实际值。


    MSDN:http://msdn.microsoft.com/zh-cn/library/hh231473.aspx  & http://msdn.microsoft.com/zh-cn/library/hh231327.aspx

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:656454次
    • 积分:8521
    • 等级:
    • 排名:第2360名
    • 原创:176篇
    • 转载:23篇
    • 译文:49篇
    • 评论:80条
    最新评论