Oracle關鍵字Over、With用法

來源:互聯網
上載者:User

一:

row_number()over(partition by col1 order by col2)表示根據col1分組,在分組內部根據col2排序,而此Function Compute的值就表示每組內部排序後的順序編號(組內連續的唯一的)

row_number()和rownum差不多,功能更強一點(可以在各個分組內從1開始排序)。

rank()是跳躍排序,有兩個第二名時接下來就是第四名(同樣是在各個分組內)

dense_rank()也是連續排序,有兩個第二名時仍然跟著第三名。相比之下row_number是沒有重複值的。

1例:

select row_number() over(partition by orgid order by userid) as row_ ,username,orgid,userid from au_userinfo;

相當於根據orgid分組,然後給每組進行排名;

結果如下:

2例:

select row_number() over(order by userid) as a, orgid,userid,username from au_userinfo;

相當於 order by userid排序;

二:

with用法:相當於一個結果集表名:

with aaaa as (select userid,orgid,username from au_userinfo) select userid,username from aaaa;

結果如下:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.