zoukankan      html  css  js  c++  java
  • SQL OVER用法

    Sql代码 复制代码 收藏代码
    1. sql over的作用及用法 
    2. RANK ( ) OVER ( [query_partition_clause] order_by_clause ) 
    3. DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause ) 
    4. 可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序, 
    5. 其中PARTITION BY 为分组字段,ORDERBY 指定排序字段 
    6.  
    7.  
    8. over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。 
    9. 其参数:over(partition by columnname1 orderby columnname2) 
    10. 含义:按columname1指定的字段进行分组排序,或者说按字段columnname1的值进行分组排序。 
    11. 例如:employees表中,有两个部门的记录:department_id =10和20 
    12. select department_id,rank() over(partition by department_id orderby salary) from employees就是指在部门10中进行薪水的排名,在部门20中进行薪水排名。如果是partition by org_id,则是在整个公司内进行排名。 
    sql over的作用及用法
    RANK ( ) OVER ( [query_partition_clause] order_by_clause )
    DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause )
    可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,
    其中PARTITION BY 为分组字段,ORDER BY 指定排序字段
    
    
    over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。
    其参数:over(partition by columnname1 order by columnname2)
    含义:按columname1指定的字段进行分组排序,或者说按字段columnname1的值进行分组排序。
    例如:employees表中,有两个部门的记录:department_id =10和20
    select department_id,rank() over(partition by department_id order by salary) from employees就是指在部门10中进行薪水的排名,在部门20中进行薪水排名。如果是partition by org_id,则是在整个公司内进行排名。

    --------------------------------------------------------------------------------------------

    以上为示例1

    Sql代码 复制代码 收藏代码
    1. Select ID, Position + datediff(day, PDate, getdate()) as Position,PDate, Row_Number() over(orderby Position) as Sort 
    2. From OverTest 
    Select ID, Position + datediff(day, PDate, getdate()) as Position,PDate, Row_Number() over(order by Position) as Sort
    From OverTest

      --------------------------------------------------------------------------------------------

    以上为示例2

     

     

     

    Sql代码 复制代码 收藏代码
    1. sql = "SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY table1.BookingBranch, table1.RefNo) AS RowId, * From (" 
    2.                 + sql.toString() + ") as Table1) as Table2 WHERE Table2.RowId BETWEEN " + startRow + " AND " + endRow;       
    3.          
    sql = "SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY table1.BookingBranch, table1.RefNo) AS RowId, * From ("
    				+ sql.toString() + ") as Table1) as Table2 WHERE Table2.RowId BETWEEN " + startRow + " AND " + endRow;		
    		

      --------------------------------------------------------------------------------------------

    以上为示例3

  • 相关阅读:
    Jenkins获取运行job的用户名(在构建历史中展示构建人)
    Android -tool工具UIautomatorviewer提示“不能让屏幕黑屏”
    转: 谈谈关于内存的一些心得体会
    IP地址,子网掩码划分(转)
    重定向子进程控制台程序的输入输出
    正则表达式(1)
    Log4Net使用指南(转)
    使用wireshark抓本机之间的包(转)
    VirtualBox开发环境的搭建详解(转)
    SxsTrace工具使用方法(转)
  • 原文地址:https://www.cnblogs.com/soundcode/p/2682861.html
Copyright © 2011-2022 走看看