婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > postgresql rank() over, dense_rank(), row_number()用法區別

postgresql rank() over, dense_rank(), row_number()用法區別

熱門標簽:合肥公司外呼系統運營商 辦公外呼電話系統 外呼調研系統 美容工作室地圖標注 海豐有多少商家沒有地圖標注 地圖標注和圖片名稱的區別 打電話智能電銷機器人授權 漯河外呼電話系統 重慶自動外呼系統定制

如下學生表student,學生表中有姓名、分數、課程編號,需要按照課程對學生的成績進行排序

select * from jinbo.student;
 id | name | score | course 
----+-------+-------+--------
 5 | elic | 70 |  1
 4 | dock | 100 |  1
 3 | cark | 80 |  1
 2 | bob | 90 |  1
 1 | alice | 60 |  1
 10 | jacky | 80 |  2
 9 | iris | 80 |  2
 8 | hill | 60 |  1
 7 | grace | 50 |  2
 6 | frank | 70 |  2
 6 | test |  |  2
(11 rows)

1、rank over () 可以把成績相同的兩名是并列,如下course = 2 的結果rank值為:1 2 2 4 5

 select name,
  score,
  course,
  rank() over(partition by course order by score desc) as rank
 from jinbo.student;
 name | score | course | rank 
-------+-------+--------+------
 dock | 100 |  1 | 1
 bob | 90 |  1 | 2
 cark | 80 |  1 | 3
 elic | 70 |  1 | 4
 hill | 60 |  1 | 5
 alice | 60 |  1 | 5
 test |  |  2 | 1
 iris | 80 |  2 | 2
 jacky | 80 |  2 | 2
 frank | 70 |  2 | 4
 grace | 50 |  2 | 5
(11 rows)

2、dense_rank()和rank over()很相似,可以把學生成績并列不間斷順序排名,如下course = 2 的結果rank值為:1 2 2 3 4

select name,score,
  course,
  dense_rank() over(partition by course order by score desc) as rank
 from jinbo.student;
 name | score | course | rank 
-------+-------+--------+------
 dock | 100 |  1 | 1
 bob | 90 |  1 | 2
 cark | 80 |  1 | 3
 elic | 70 |  1 | 4
 hill | 60 |  1 | 5
 alice | 60 |  1 | 5
 test |  |  2 | 1
 iris | 80 |  2 | 2
 jacky | 80 |  2 | 2
 frank | 70 |  2 | 3
 grace | 50 |  2 | 4
(11 rows)

3、row_number 可以把相同成績的連續排名,如下 course = 2 的結果rank值為:1 2 3 4 5

select name,score,
  course,
  row_number() over(partition by course order by score desc) as rank
 from jinbo.student;
 name | score | course | rank 
-------+-------+--------+------
 dock | 100 |  1 | 1
 bob | 90 |  1 | 2
 cark | 80 |  1 | 3
 elic | 70 |  1 | 4
 hill | 60 |  1 | 5
 alice | 60 |  1 | 6
 test |  |  2 | 1
 iris | 80 |  2 | 2
 jacky | 80 |  2 | 3
 frank | 70 |  2 | 4
 grace | 50 |  2 | 5
(11 rows)

使用rank over()的時候,空值是最大的,如果排序字段為null, 可能造成null字段排在最前面,影響排序結果,可以如下:

rank over(partition by course order by score desc nulls last)

4、總結

partition by 用于結果集分組,如果沒有指定,會把整個結果集作為一個分組

rank 、dense_rank 、row_numer 都是不同方式的結果集組內排序,一般都結合over 字句出現,over 字句里 會有 partition by、order by、last、first 的任意組合,如下:

rank() over(partition by a,b order by a, order by b desc);
rank() over(partition by a order by b nulls first)
rank() over(partition by a order by b nulls last)

補充:Oracle或者PostgreSQL的row_number over 排名語法

PostgreSQL 和Oracle 都提供了 row_number() over() 這樣的語句來進行對應的字段排名,很是方便。MySQL卻沒有提供這樣的語法。

這次我提供的表結構如下,

    Table "ytt.t1" 
 Column |   Type   | Modifiers 
--------+-----------------------+----------- 
 i_name | character varying(10) | not null 
 rank | integer    | not null 

我模擬了20條數據來做演示。

t_girl=# select * from t1 order by i_name;        
 i_name | rank 
---------+------ 
 Charlie | 12 
 Charlie | 12 
 Charlie | 13 
 Charlie | 10 
 Charlie | 11 
 Lily  | 6 
 Lily  | 7 
 Lily  | 7 
 Lily  | 6 
 Lily  | 5 
 Lily | 7 
 Lily | 4 
 Lucy | 1 
 Lucy | 2 
 Lucy | 2 
 Ytt  | 14 
 Ytt  | 15 
 Ytt  | 14 
 Ytt  | 14 
 Ytt  | 15 
(20 rows) 

在PostgreSQL下,我們來對這樣的排名函數進行三種不同的執行方式1:

第一種:

完整的帶有排名字段以及排序。

t_girl=# select i_name,rank, row_number() over(partition by i_name order by rank desc) as rank_number from t1;  
 i_name | rank | rank_number 
---------+------+------------- 
 Charlie  | 13 |   1 
 Charlie | 12 |   2 
 Charlie | 12 |   3 
 Charlie | 11 |   4 
 Charlie | 10 |   5 
 Lily  | 7 |   1 
 Lily  | 7 |   2 
 Lily  | 7 |   3 
 Lily  | 6 |   4 
 Lily  | 6 |   5 
 Lily  | 5 |   6 
 Lily  | 4 |   7 
 Lucy | 2 |   1 
 Lucy | 2 |   2 
 Lucy | 1 |   3 
 Ytt  | 15 |   1 
 Ytt  | 15 |   2 
 Ytt  | 14 |   3 
 Ytt  | 14 |   4 
 Ytt  | 14 |   5 
(20 rows) 

第二種:

帶有完整的排名字段但是沒有排序。

t_girl=# select i_name,rank, row_number() over(partition by i_name ) as rank_number from t1; 
 i_name | rank | rank_number 
---------+------+------------- 
 Charlie  | 12 |   1 
 Charlie | 12 |   2 
 Charlie | 13 |   3 
 Charlie | 10 |   4 
 Charlie | 11 |   5 
 Lily  | 6 |   1 
 Lily  | 7 |   2 
 Lily  | 7 |   3 
 Lily  | 6 |   4 
 Lily  | 5 |   5 
 Lily  | 7 |   6 
 Lily  | 4 |   7 
 Lucy | 1 |   1 
 Lucy | 2 |   2 
 Lucy | 2 |   3 
 Ytt  | 14 |   1 
 Ytt  | 15 |   2 
 Ytt  | 14 |   3 
 Ytt  | 14 |   4 
 Ytt  | 15 |   5 
(20 rows) 

第三種:

沒有任何排名字段,也沒有任何排序字段。

t_girl=# select i_name,rank, row_number() over() as rank_number from t1; 
 i_name | rank | rank_number 
---------+------+------------- 
 Lily  | 7 |   1 
 Lucy | 2 |   2 
 Ytt  | 14 |   3 
 Ytt  | 14 |   4 
 Charlie | 12 |   5 
 Charlie | 13 |   6 
 Lily  | 7 |   7 
 Lily  | 4 |   8 
 Ytt  | 14 |   9 
 Lily  | 6 |   10 
 Lucy | 1 |   11 
 Lily  | 7 |   12 
 Ytt  | 15 |   13 
 Lily  | 6 |   14 
 Charlie | 11 |   15 
 Charlie | 12 |   16 
 Lucy | 2 |   17 
 Charlie | 10 |   18 
 Lily  | 5 |   19 
 Ytt  | 15 |   20 
(20 rows) 

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • MYSQL row_number()與over()函數用法詳解
  • PostgreSQL ROW_NUMBER() OVER()的用法說明
  • postgreSQL中的row_number() 與distinct用法說明
  • MySQL中row_number的實現過程
  • SQL Server中row_number函數的常見用法示例詳解
  • sql四大排名函數之ROW_NUMBER、RANK、DENSE_RANK、NTILE使用介紹
  • sql ROW_NUMBER()與OVER()方法案例詳解

標簽:烏海 株洲 珠海 晉城 來賓 衡陽 蚌埠 錦州

巨人網絡通訊聲明:本文標題《postgresql rank() over, dense_rank(), row_number()用法區別》,本文關鍵詞  postgresql,rank,over,dense,row,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《postgresql rank() over, dense_rank(), row_number()用法區別》相關的同類信息!
  • 本頁收集關于postgresql rank() over, dense_rank(), row_number()用法區別的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日本美女一区二区三区| 激情另类小说区图片区视频区| 欧美在线免费观看亚洲| www.欧美精品一二区| 高清久久久久久| 91美女片黄在线观看| 欧洲色大大久久| 欧美二区在线观看| 久久综合精品国产一区二区三区| 国产婷婷色一区二区三区| 国产精品家庭影院| 免费欧美日韩国产三级电影| 成人激情开心网| 777亚洲妇女| 国产精品视频免费| 亚洲成a人在线观看| 国产福利精品一区二区| 欧美男男青年gay1069videost| 精品国产91洋老外米糕| 一个色在线综合| 国产精选一区二区三区| 95精品视频在线| 日韩一区二区免费在线电影| 26uuu久久天堂性欧美| 亚洲成人av一区二区| 日韩天堂在线观看| 三级不卡在线观看| 亚洲黄色av一区| 日韩一区二区免费在线电影| 精品国产人成亚洲区| 日韩va亚洲va欧美va久久| 久久影院午夜论| 菠萝蜜视频在线观看一区| 亚洲裸体xxx| 狠狠v欧美v日韩v亚洲ⅴ| 国产日韩欧美精品一区| 欧美中文字幕一区| 国精产品一区一区三区mba视频| 中文字幕亚洲在| 在线不卡中文字幕播放| 亚洲精品免费播放| 日韩美女主播在线视频一区二区三区 | 欧洲精品视频在线观看| 青青草原综合久久大伊人精品优势 | 日韩福利视频网| 91色九色蝌蚪| 国产夫妻精品视频| 亚洲一区在线视频观看| 国产精品麻豆99久久久久久| 欧美一级午夜免费电影| 91女人视频在线观看| 精品中文av资源站在线观看| 91小视频免费看| 国产乱子轮精品视频| 日韩高清不卡一区二区三区| 在线电影国产精品| 99re免费视频精品全部| 丁香婷婷综合激情五月色| 六月丁香婷婷色狠狠久久| 亚洲国产中文字幕| 最新国产精品久久精品| 久久亚洲综合色| 久久久久国产精品免费免费搜索| 欧美日韩成人高清| 欧美亚洲国产bt| 美女诱惑一区二区| 日本成人在线电影网| 欧美一区二区在线看| 欧美美女直播网站| 欧美日韩一区二区欧美激情| 在线看日韩精品电影| 欧日韩精品视频| 欧美激情一区二区三区不卡 | 91精品欧美久久久久久动漫| 日韩毛片高清在线播放| 国产一区二区毛片| 欧美日韩国产123区| 国产精品福利一区| 国产精品一区二区久久不卡| 555www色欧美视频| 亚洲va欧美va国产va天堂影院| 国产91露脸合集magnet | 亚洲男人的天堂在线观看| 精品亚洲成a人| 日韩一区二区在线观看| 亚洲午夜精品网| 色婷婷久久久亚洲一区二区三区| 国产欧美日韩三区| 国产剧情一区二区三区| 久久久久九九视频| 国产一区不卡视频| 欧美哺乳videos| 老司机精品视频一区二区三区| 欧美另类变人与禽xxxxx| 亚洲成人av福利| 欧美疯狂做受xxxx富婆| 亚洲国产精品久久人人爱蜜臀| 国产老妇另类xxxxx| 欧美激情在线观看视频免费| 国产制服丝袜一区| 久久精品免视看| 国产91高潮流白浆在线麻豆| 国产人伦精品一区二区| 高潮精品一区videoshd| 成人免费在线视频| 日本乱人伦aⅴ精品| 亚洲精品v日韩精品| 欧美日韩国产一二三| 日韩高清不卡在线| 久久综合九色综合97婷婷女人| 成人免费黄色大片| 一区二区在线观看免费 | 亚洲精品视频免费观看| 色呦呦国产精品| 日韩精品福利网| 久久久国际精品| 91视频免费看| 麻豆久久久久久| 国产精品免费看片| 欧美日韩在线播放三区| 久99久精品视频免费观看| 中文字幕一区二区三区精华液 | 夜夜操天天操亚洲| 欧美一级二级在线观看| 国产成人日日夜夜| 一区二区三区不卡视频| 日韩欧美一区在线观看| 国产精品白丝av| 夜色激情一区二区| 精品国产免费视频| 色婷婷精品大视频在线蜜桃视频| 亚洲精品欧美二区三区中文字幕| 欧美日韩dvd在线观看| 九九精品一区二区| 欧美国产日韩一二三区| 91无套直看片红桃| 蜜臀久久久99精品久久久久久| 国产精品久久久久影院亚瑟 | 日韩国产精品91| 欧美国产成人精品| 制服丝袜亚洲网站| 在线欧美一区二区| 丁香一区二区三区| 精品一区二区精品| 亚洲动漫第一页| 国产精品麻豆欧美日韩ww| 日韩三级视频中文字幕| 色域天天综合网| 成av人片一区二区| 国产精品一区二区无线| 秋霞电影一区二区| 亚洲一区二区影院| 国产精品日韩精品欧美在线| 日韩一级在线观看| 欧美日韩成人一区二区| 欧美亚日韩国产aⅴ精品中极品| 成人av在线看| 国产乱码一区二区三区| 裸体一区二区三区| 欧美aaaaa成人免费观看视频| 亚洲免费在线观看| 久久久www成人免费毛片麻豆| 欧美在线你懂的| 国产69精品久久99不卡| 国产精品一区二区男女羞羞无遮挡| 亚洲综合自拍偷拍| 亚洲欧美另类久久久精品| 久久女同互慰一区二区三区| 欧美日韩国产系列| 99久久99久久精品免费观看| 成人美女视频在线观看18| 国产**成人网毛片九色| 久久99精品国产91久久来源| 亚洲视频 欧洲视频| 国产精品久久毛片| 亚洲欧美另类图片小说| 中文字幕一区av| 亚洲特黄一级片| 亚洲美女在线一区| 中文字幕 久热精品 视频在线| 中文一区二区完整视频在线观看| 国产女人水真多18毛片18精品视频| 久久亚洲私人国产精品va媚药| 久久这里只有精品6| 国产肉丝袜一区二区| 国产日韩av一区| 亚洲人成精品久久久久| 亚洲午夜影视影院在线观看| 天天综合网 天天综合色| 日本欧美在线看| 国内精品自线一区二区三区视频| 国产麻豆一精品一av一免费| 成人综合婷婷国产精品久久免费| 成人av在线影院| 欧美亚洲日本国产| 欧美一区二区三区视频在线 | 一区二区三区国产| 日韩高清在线电影| 成人黄色在线网站| 欧美日韩中文字幕一区二区|