zoukankan      html  css  js  c++  java
  • SQL row_number() over(partition by函数

    1)row_number() over(partition by 列名1 order by 列名2 desc)的使用

    表示根据 列名1 分组,然后在分组内部根据 列名2 排序,而此函数计算的值就表示每组内部排序后的顺序编号,可以用于去重复值

    与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪列rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码.

    原文链接:https://blog.csdn.net/mzy755423868/article/details/80573654

    表示根据 列名1 分组,然后在分组内部根据 列名2 排序,而此函数计算的值就表示每组内部排序后的顺序编号,可以用于去重复值

    与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪列rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码.

    ---查询所有姓名,如果同名,则按年龄降序
    SELECT name,age,detail,ROW_NUMBER() OVER(PARTITION BY name ORDER BY age DESC) FROM TEST_Y;
     
    通过上面的语句可知,是按照name字段分组,按age字段排序的。如果只需查询出不重复的姓名即可,则可使用如下的语句, 由查询结果可知,姓名相同年龄小的数据被过滤掉了;
    SELECT * FROM (SELECT name,age,detail,ROW_NUMBER() OVER( PARTITION BY name ORDER BY age DESC)RN FROM TEST_Y )WHERE RN= 1;

     
    分页
     
    --先做一个子查询,先按id1进行排序,排序完后,给每条记录进行了编号
    --然后再将子查询做为一张表,就可以进行分页了
    select *
      from (select t.*,row_number() over(order by t.id1 asc) as rn from demo t) d
      where d.rn between 1 and 2
     
    --测试角度看问题--
  • 相关阅读:
    hiveserver2 with kerberos authentication
    python Basic usage
    python Quicksort demo
    Python HeapSort
    mrunit for wordcount demo
    CCDH证书
    Hadoop question list
    Hadoop Yarn core concepts
    Hadoop Resource
    Hadoop could not find or load main class
  • 原文地址:https://www.cnblogs.com/87060524test/p/10315659.html
Copyright © 2011-2022 走看看