亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

Oracle查詢中OVER (PARTITION BY ..)用法

2024-08-29 14:00:55
字體:
供稿:網(wǎng)友

為了方便大家學(xué)習(xí)和測試,所有的例子都是在Oracle自帶用戶Scott下建立的。

注:標(biāo)題中的紅色order by是說明在使用該方法的時候必須要帶上order by。

一、rank()/dense_rank() over(partition by ...order by ...)

現(xiàn)在客戶有這樣一個需求,查詢每個部門工資最高的雇員的信息,相信有一定oracle應(yīng)用知識的同學(xué)都能寫出下面的SQL語句:

select e.ename, e.job, e.sal, e.deptno  from scott.emp e,     (select e.deptno, max(e.sal) sal from scott.emp e group by e.deptno) me  where e.deptno = me.deptno   and e.sal = me.sal; 

在滿足客戶需求的同時,大家應(yīng)該習(xí)慣性的思考一下是否還有別的方法。這個是肯定的,就是使用本小節(jié)標(biāo)題中rank() over(partition by...)或dense_rank() over(partition by...)語法,SQL分別如下:

select e.ename, e.job, e.sal, e.deptno  from (select e.ename,         e.job,         e.sal,         e.deptno,         rank() over(partition by e.deptno order by e.sal desc) rank      from scott.emp e) e  where e.rank = 1; 
select e.ename, e.job, e.sal, e.deptno  from (select e.ename,         e.job,         e.sal,         e.deptno,         dense_rank() over(partition by e.deptno order by e.sal desc) rank      from scott.emp e) e  where e.rank = 1; 

為什么會得出跟上面的語句一樣的結(jié)果呢?這里補(bǔ)充講解一下rank()/dense_rank() over(partition by e.deptno order by e.sal desc)語法。

over: 在什么條件之上。

partition by e.deptno: 按部門編號劃分(分區(qū))。

order by e.sal desc: 按工資從高到低排序(使用rank()/dense_rank() 時,必須要帶order by否則非法)

rank()/dense_rank(): 分級

整個語句的意思就是:在按部門劃分的基礎(chǔ)上,按工資從高到低對雇員進(jìn)行分級,“級別”由從小到大的數(shù)字表示(最小值一定為1)。

那么rank()和dense_rank()有什么區(qū)別呢?

rank(): 跳躍排序,如果有兩個第一級時,接下來就是第三級。

dense_rank(): 連續(xù)排序,如果有兩個第一級時,接下來仍然是第二級。

小作業(yè):查詢部門最低工資的雇員信息。

二、min()/max() over(partition by ...)

現(xiàn)在我們已經(jīng)查詢得到了部門最高/最低工資,客戶需求又來了,查詢雇員信息的同時算出雇員工資與部門最高/最低工資的差額。這個還是比較簡單,在第一節(jié)的groupby語句的基礎(chǔ)上進(jìn)行修改如下:

select e.ename,      e.job,      e.sal,      e.deptno,      e.sal - me.min_sal diff_min_sal,      me.max_sal - e.sal diff_max_sal   from scott.emp e,      (select e.deptno, min(e.sal) min_sal, max(e.sal) max_sal       from scott.emp e       group by e.deptno) me   where e.deptno = me.deptno   order by e.deptno, e.sal;

上面我們用到了min()和max(),前者求最小值,后者求最大值。如果這兩個方法配合over(partition by ...)使用會是什么效果呢?大家看看下面的SQL語句:

select e.ename,     e.job,     e.sal,     e.deptno,     nvl(e.sal - min(e.sal) over(partition by e.deptno), 0) diff_min_sal,     nvl(max(e.sal) over(partition by e.deptno) - e.sal, 0) diff_max_sal  from scott.emp e;

這兩個語句的查詢結(jié)果是一樣的,大家可以看到min()和max()實(shí)際上求的還是最小值和最大值,只不過是在partition by分區(qū)基礎(chǔ)上的。

小作業(yè):如果在本例中加上order by,會得到什么結(jié)果呢?

三、lead()/lag() over(partition by ... order by ...)

中國人愛攀比,好面子,聞名世界??蛻舾呛眠@一口,在和最高/最低工資比較完之后還覺得不過癮,這次就提出了一個比較變態(tài)的需求,計(jì)算個人工資與比自己高一位/低一位工資的差額。這個需求確實(shí)讓我很是為難,在groupby語句中不知道應(yīng)該怎么去實(shí)現(xiàn)。不過。。。?,F(xiàn)在我們有了over(partition by ...),一切看起來是那么的簡單。如下:

select e.ename,     e.job,     e.sal,     e.deptno,     lead(e.sal, 1, 0) over(partition by e.deptno order by e.sal) lead_sal,     lag(e.sal, 1, 0) over(partition by e.deptno order by e.sal) lag_sal,     nvl(lead(e.sal) over(partition by e.deptno order by e.sal) - e.sal,       0) diff_lead_sal,     nvl(e.sal - lag(e.sal) over(partition by e.deptno order by e.sal), 0) diff_lag_sal  from scott.emp e; 

看了上面的語句后,大家是否也會覺得虛驚一場呢(驚出一身冷汗后突然雞凍起來,這樣容易感冒)?我們還是來講解一下上面用到的兩個新方法吧。

lead(列名,n,m): 當(dāng)前記錄后面第n行記錄的<列名>的值,沒有則默認(rèn)值為m;如果不帶參數(shù)n,m,則查找當(dāng)前記錄后面第一行的記錄<列名>的值,沒有則默認(rèn)值為null。

lag(列名,n,m): 當(dāng)前記錄前面第n行記錄的<列名>的值,沒有則默認(rèn)值為m;如果不帶參數(shù)n,m,則查找當(dāng)前記錄前面第一行的記錄<列名>的值,沒有則默認(rèn)值為null。

下面再列舉一些常用的方法在該語法中的應(yīng)用(注:帶order by子句的方法說明在使用該方法的時候必須要帶order by):

select e.ename,     e.job,     e.sal,     e.deptno,     first_value(e.sal) over(partition by e.deptno) first_sal,     last_value(e.sal) over(partition by e.deptno) last_sal,     sum(e.sal) over(partition by e.deptno) sum_sal,     avg(e.sal) over(partition by e.deptno) avg_sal,     count(e.sal) over(partition by e.deptno) count_num,     row_number() over(partition by e.deptno order by e.sal) row_num  from scott.emp e; 

大家在讀完本片文章之后可能會有點(diǎn)誤解,就是OVER (PARTITION BY ..)比GROUP BY更好,實(shí)際并非如此,前者不可能替代后者,而且在執(zhí)行效率上前者也沒有后者高,只是前者提供了更多的功能而已,所以希望大家在使用中要根據(jù)需求情況進(jìn)行選擇。

 

注:相關(guān)教程知識閱讀請移步到oracle教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
日本动漫同人动漫在线观看| 潘金莲一级淫片aaaaaa播放1| 国产在线精品二区| 国产视频在线看| 国产日本久久| 日韩视频在线免费| aaa欧美日韩| 欧美一区免费观看| 国产不卡一区视频| 午夜精品福利视频网站| 欧美一区二区成人6969| 蜜桃av在线| 国产精品无码免费播放| 国产精品99一区| 欧美一区二区三区在线观看免费| 久久在线视频| 在线看女人毛片| 欧美日韩国产黄| 国产精品免费一区二区三区在线观看| 伊伊综合在线| 亚州av电影免费在线观看| 久久精品视频在线播放| 亚洲成人精品一区二区三区| 在线观看日本中文字幕| 欧美大学生性色视频| www.一区二区.com| 精品欧美黑人一区二区三区| 少妇精品高潮欲妇又嫩中文字幕| 国产成人自拍高清视频在线免费播放| 日韩中文字幕1| 日韩在线一区二区| 男男gaygays亚洲| 国产欧美精品一区二区色综合| 一区免费视频| 在线日本中文字幕| 国产精品自在线| 亚洲人成电影| chinese全程对白| 久热久热免费视频中文字幕777| 69国产精品视频免费观看| 国产一区二区精品久久99| 国产美女精品视频免费播放软件| 天堂中文字幕在线| 国产三级国产精品国产专区50| 欧美福利在线播放网址导航| 国产电影精品久久禁18| 久久影院中文字幕| 99re热这里只有精品免费视频| 日本黄区免费视频观看| zzzwww在线看片免费| av在线不卡网站| 日韩成人av一区| 国产日韩av网站| 手机看片一区二区三区| 精品日产乱码久久久久久仙踪林| 一本久中文高清| 欧美色播在线播放| 3d动漫精品啪啪| 久久精品国产网站| 国产又大又黄又猛| 欧美成人aaa片一区国产精品| 日韩精品极品视频在线观看免费| 悠悠色在线精品| 亚洲人精品午夜在线观看| 国产精品久久在线观看| 黄瓜视频网站| 亚洲一区二区三区免费观看| 欧美日韩免费一区| 国产精品黄页免费高清在线观看| 日韩一级视频在线观看| 日韩av免费电影| 国产视频精品久久| 久久国产精品99久久人人澡| 国产永久免费视频| 成人在线日韩| 国产成人免费高清视频| 亚洲成av人片www| 日本熟妇毛茸茸丰满| 免费成人高清视频| 色婷婷综合网| 中文字幕日韩综合| 国产成人午夜片在线观看高清观看| 在线亚洲午夜片av大片| 欧美一区二区视频在线| 国产精品日本一区二区| 六月丁香婷婷综合| 欧美专区视频| 亚洲精品一区二区妖精| 在线观看网站黄| 久久久精品91| 美女久久久久久久久久久| 在线观看av大片| 黑人と日本人の交わりビデオ| 亚洲成人动漫在线| 国产厕所精品在线观看| 一区二区在线观看免费视频| 亚洲91中文字幕无线码三区| 中文字幕精品无码一区二区| 青春草视频在线观看| 国产精欧美一区二区三区白种人| 亚洲国产成人在线播放| 成年丰满熟妇午夜免费视频| 黄色影片网站| 俺来也官网欧美久久精品| 超碰91在线| 神马影视一区二区| 黄色录像一级片| 成人在线高清视频| 亚洲午夜无码av毛片久久| 成人毛片视频在线观看| 四虎成人在线观看| 欧美午夜精品理论片a级按摩| 人妻体内射精一区二区| 妺妺窝人体色www在线下载| 亚洲午夜久久久久久久久久久| 精品久久久久久久久久国产| 在线视频1区| 蜜桃tv在线播放| 色综合视频一区二区三区日韩| 天堂在线免费观看视频| 性欧美69式xxxxx| 久久精品国产91精品亚洲| 免费亚洲电影| 完全免费av在线播放| 精品欧美激情在线观看| 精品亚洲成a人片在线观看| 99热一区二区三区| 亚洲欧美一区二区精品久久久| 自拍视频一区二区三区| 亚洲精品国产精品乱码不卡| 日韩中文字幕在线视频播放| 在线日韩欧美| 欧美一区91| 美女又爽又黄免费视频| 亚洲理论在线a中文字幕| 中文字幕一二三区在线观看| 136国产福利精品导航网址| 成人做爰www看视频软件| 国产精品久久久久久久蜜臀| 一级做a爰片久久| 亚洲在线中文字幕| 91国内精品| 一级片免费在线播放| 亚洲综合视频| 国产又粗又长免费视频| 免费在线看大片无需流量| 人妻激情偷乱频一区二区三区| 中文字幕欧美日韩va免费视频| 中文字幕免费高清在线观看| 白白色视频在线| 国产精品合集一区二区| 亚洲午夜激情网站| 大肉大捧一进一出好爽视频| 尤物在线观看视频| 精品人妻伦一二三区久| 美女视频第一区二区三区免费观看网站| 最近中文字幕免费在线观看| 亚洲精品福利在线观看| 亚洲成人自拍| 久草免费资源| 亚洲欧美国产制服动漫| 色婷婷亚洲综合| 最新福利小视频在线播放| 欧美一区二区三区红桃小说| 欧美**室bdsm视频| 国产精品偷伦免费视频观看的| 久久久久久久综合狠狠综合| 伊人av免费在线观看| 国产欧美一区二区三区精品酒店| 日韩高清三区| 成人激情五月天| 成人免费看黄网站| 国产原创精品在线| 成人高清在线观看免费| 国内欧美日韩| 波多野结衣50连登视频| 亚洲日本久久| 久99九色视频在线观看| 日韩高清一区二区| 成人激情综合网| 日韩av免费看网站| 成人精品一区二区三区电影免费| 色橹橹高清视频在线播放| 久久www成人_看片免费不卡| www.男人的天堂.com| 婷婷精品在线| 特级西西人体wwwww| 福利在线观看| 成人a级免费视频| 91成人免费在线视频| 99精品久久久| 亚洲一区二区在线播放相泽| 香蕉久久久久久av成人| 欧美人与性动交a欧美精品| 色综合久久88色综合天天6| 欧美日韩另类国产亚洲欧美一级| 成人综合激情网| 国产成人无码精品| 一区二区三区欧美| 99视频热这里只有精品免费| 天天操夜夜操视频| 久久久一本精品99久久精品66| 91精品国产91久久久久| 91久久线看在观草草青青| 国产成人无码av在线播放dvd| 欧美黄色小说| 国产伦视频一区二区三区| 亚洲成成品网站| 久久黄色小视频| 亚洲日本青草视频在线怡红院| 国产精品美女久久久免费| 国内精品免费在线观看| 国产精品夫妻自拍| 中文字幕第15页| 91大神xh98hx在线播放| av官网在线播放| 免费高清视频在线一区| 国产日本在线视频| 久久99国产精品成人| 电影在线观看一区二区| 99re热精品视频| 欧美日韩国产电影| 亚洲免费黄色录像| 伊人成人开心激情综合网| 亚洲国产精品va在看黑人| 日韩激情av在线免费观看| 成人欧美精品一区二区| 无码人妻精品一区二区蜜桃百度| 成人毛片在线免费观看| 肥臀熟女一区二区三区| 国产盗摄女厕一区二区三区| 一区在线不卡| 日韩欧美中文免费| 精品无码人妻一区| 粉嫩高清一区二区三区精品视频| 日韩欧美一级精品久久| 亚洲一区二区伦理| 黄色免费在线看| 久草在线青青草| 男同互操gay射视频在线看| 精品无人乱码一区二区三区的优势| 色综合久久网女同蕾丝边| 国产精品色在线网站| 美女视频亚洲色图| 精品中文字幕乱| 水莓100在线视频| 色se01短视频永久免费| 在线 丝袜 欧美 日韩 制服| 99免费精品在线观看| www.久久视频| 亚洲一区 在线播放| 精品视频—区二区三区免费| 国产精品456| 中国动漫在线观看完整版免费| 一本色道久久综合亚洲精品高清| 亚洲加勒比久久88色综合| 久久久久久免费看| 美国成人av| 欧美一级爱爱视频| 麻豆精品一区二区三区视频| 欧美吞精做爰啪啪高潮| 午夜激情福利在线| 国产成人精品视频免费| 国产成人无码精品久在线观看| 精品国产a一区二区三区v免费| 欧美永久精品| 欧美三根一起进三p| 国产三级精品在线| 在线观看日韩av电影| 亚洲一区在线直播| 国产精品日韩在线一区| 国产免费久久| 欧美日韩导航| 欧美mv和日韩mv国产网站| 午夜成年人在线免费视频| 日本网站在线观看一区二区三区| 中文字幕在线天堂| 亚洲一区二区三区视频| 国产激情视频在线播放| √天堂中文官网8在线| 四虎永久免费影院| 日韩美女视频一区| 欧美妇乱xxxxx视频| 午夜小视频在线播放| 久久激情免费视频| 卡一卡二国产精品| 国产自产视频一区二区三区| 四虎免费播放| 亚洲欧美电影一区二区| 中文字幕在线播放视频| 欧美精品卡一卡二| 亚洲人成精品久久久久久| avav在线播放| 久久久久久久久久久久久久久久久久| 蜜桃精品成人影片| 午夜精品视频在线观看一区二区| 国产人妻大战黑人20p| 在线播放国产精品| 免费黄色片在线观看| 濑亚美莉大战黑人中文字幕| 国产精品国模大尺度视频| 在线亚洲一区| 久久99精品久久久久久噜噜| 色综合蜜月久久综合网| 在线观看美女网站大全免费| 国产免费播放一区二区| 亚洲男同gay网站| 日本成本人片免费观看| 91视视频在线直接观看在线看网页在线看| 亚洲欧美卡通动漫| 欧美人与性动交a欧美精品| 精品视频久久久久| 黑人狂躁日本娇小| 男人的天堂在线| 国产黑人绿帽在线第一区| 黄色精品一二区| 一二三区中文字幕| 精品国产乱码91久久久久久网站| 天天干夜夜干| 日韩一区二区三区色| 欧美日韩一级大片| 国产精品免费aⅴ片在线观看| 国产精品福利视频一区二区三区| 日本乱人伦a精品| 另类专区欧美制服同性| 中文字幕在线免费观看| 国产一区二区三区成人| 91日韩免费|