欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Oracle分析函數(shù)四——函數(shù)RANK,DENSE_RANK,FIRS

系統(tǒng) 2063 0

原創(chuàng)于2009年08月02日,2009年10月22日遷移至此。


Oracle 分析函數(shù)——函數(shù) RANK,DENSE_RANK,FIRST,LAST…

RANK

功能描述:根據(jù) ORDER BY 子句中表達(dá)式的值,從查詢返回的每一行,計算它們與其它行的相對位置。組內(nèi)的數(shù)據(jù)按 ORDER BY 子句排序,然后給每一行賦一個號,從而形成一個序列,該序列從 1 開始,往后累加。每次 ORDER BY 表達(dá)式的值發(fā)生變化時,該序列也隨之增加。有同樣值的行得到同樣的數(shù)字序號(認(rèn)為 null 時相等的)。然而,如果兩行的確得到同樣的排序,則序數(shù)將隨后跳躍。若兩行序數(shù)為 1 ,則沒有序數(shù) 2 ,序列將給組中的下一行分配值 3 DENSE_RANK 則沒有任何跳躍。

SAMPLE :下例中計算每個員工按部門分區(qū)再按薪水排序,依次出現(xiàn)的序列號(注意與 DENSE_RANK 函數(shù)的區(qū)別)

DENSE_RANK

功能描述:根據(jù) ORDER BY 子句中表達(dá)式的值,從查詢返回的每一行,計算它們與其它行的相對位置。組內(nèi)的數(shù)據(jù)按 ORDER BY 子句排序,然后給每一行賦一個號,從而形成一個序列,該序列從 1 開始,往后累加。每次 ORDER BY 表達(dá)式的值發(fā)生變化時,該序列也隨之增加。有同樣值的行得到同樣的數(shù)字序號(認(rèn)為 null 時相等的)。密集的序列返回的時沒有間隔的數(shù)

SAMPLE :下例中計算每個員工按部門分區(qū)再按薪水排序,依次出現(xiàn)的序列號(注意與 RANK 函數(shù)的區(qū)別)

SELECT

department_id,

first_name||' '||last_name employee_name,

salary,

RANK() OVER (ORDER BY salary) AS RANK_ORDER,

DENSE_RANK() OVER (ORDER BY salary) AS DENSE_RANK_ORDER

FROM employees

Oracle分析函數(shù)四——函數(shù)RANK,DENSE_RANK,FIRST,LAST…

SELECT

department_id,

first_name||' '||last_name employee_name,

salary,

RANK() OVER (PARTITION BY department_id ORDER BY salary) AS RANK_PART_ORDER,

DENSE_RANK() OVER (PARTITION BY department_id ORDER BY salary) AS DENSE_RANK_PART_ORDER

FROM employees

Oracle分析函數(shù)四——函數(shù)RANK,DENSE_RANK,FIRST,LAST…

FIRST

功能描述:從 DENSE_RANK 返回的集合中取出排在最前面的一個值的行(可能多行,因?yàn)橹悼赡芟嗟龋虼送暾恼Z法需要在開始處加上一個集合函數(shù)以從中取出記錄

SAMPLE :下面例子中 DENSE_RANK 按部門分區(qū),再按傭金 commission_pct 排序, FIRST 取出傭金最低的對應(yīng)的所有行,然后前面的 MAX 函數(shù)從這個集合中取出薪水最低的值; LAST 取出傭金最高的對應(yīng)的所有行,然后前面的 MIN 函數(shù)從這個集合中取出薪水最高的值

LAST

功能描述:從 DENSE_RANK 返回的集合中取出排在最后面的一個值的行(可能多行,因?yàn)橹悼赡芟嗟龋虼送暾恼Z法需要在開始處加上一個集合函數(shù)以從中取出記錄

SAMPLE :下面例子中 DENSE_RANK 按雇用日期排序, FIRST 取出 salary 最低的對應(yīng)的所有行,然后前面的 MAX 函數(shù)從這個集合中取出薪水最低的值; LAST 取出雇用日期最高的對應(yīng)的所有行,然后前面的 MIN 函數(shù)從這個集合中取出薪水最高的值

SELECT

department_id,

first_name||' '||last_name employee_name,

hire_date,

salary,

MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY hire_date) OVER (PARTITION BY department_id) "Worst",

MAX(salary) KEEP (DENSE_RANK LAST ORDER BY hire_date) OVER (PARTITION BY department_id) "Best"

FROM employees

Oracle分析函數(shù)四——函數(shù)RANK,DENSE_RANK,FIRST,LAST…

FIRST_VALUE

功能描述:返回組中數(shù)據(jù)窗口的第一個值。

SAMPLE :下面例子計算按部門分區(qū)按薪水排序的數(shù)據(jù)窗口的第一個值對應(yīng)的名字,如果薪水的第一個值有多個,則從多個對應(yīng)的名字中取缺省排序的第一個名字

LAST_VALUE

功能描述:返回組中數(shù)據(jù)窗口的最后一個值。

SAMPLE :下面例子計算按部門分區(qū)按薪水排序的數(shù)據(jù)窗口的最后一個值對應(yīng)的名字,如果薪水的最后一個值有多個,則從多個對應(yīng)的名字中取缺省排序的最后一個名字

SELECT

department_id,

first_name||' '||last_name employee_name,

hire_date,

salary,

FIRST_VALUE(first_name||' '||last_name) OVER (PARTITION BY department_id ORDER BY salaryASC ) AS lowest_sal,

LAST_VALUE(first_name||' '||last_name) OVER(PARTITION BY department_id ORDER BY salary) AS highest_sal

FROM employees

Oracle分析函數(shù)四——函數(shù)RANK,DENSE_RANK,FIRST,LAST…

看起來 last_value first_value 的標(biāo)準(zhǔn)似乎有些不一樣,不過單獨(dú)執(zhí)行就很清楚了,呵呵

SELECT

department_id,

first_name||' '||last_name employee_name,

hire_date,

salary,

FIRST_VALUE(first_name||' '||last_name) OVER(PARTITION BY department_id ORDER BY salary ) AS lowest_sal,

FIRST_VALUE(first_name||' '||last_name) OVER(PARTITION BY department_id ORDER BY salary DESC) AS highest_sal,

LAST_VALUE(first_name||' '||last_name) OVER(PARTITION BY department_id ORDER BY salary ) AS last_sal,

LAST_VALUE(first_name||' '||last_name) OVER(PARTITION BY department_id ORDER BY salary DESC) AS last_sal_desc

FROM employees

Oracle分析函數(shù)四——函數(shù)RANK,DENSE_RANK,FIRST,LAST…

LAG

功能描述:可以訪問結(jié)果集中的其它行而不用進(jìn)行自連接。它允許去處理游標(biāo),就好像游標(biāo)是一個數(shù)組一樣。在給定組中可參考當(dāng)前行之前的行,這樣就可以從組中與當(dāng)前行一起選擇以前的行。 Offset 是一個正整數(shù),其默認(rèn)值為 1 ,若索引超出窗口的范圍,就返回默認(rèn)值(默認(rèn)返回的是組中第一行),其相反的函數(shù)是 LEAD

SAMPLE :下面的例子中列 prev_sal 返回按 hire_date 排序的前 1 行的 salary

LEAD

功能描述: LEAD LAG 相反, LEAD 可以訪問組中當(dāng)前行之后的行。 Offset 是一個正整數(shù),其默認(rèn)值為 1 ,若索引超出窗口的范圍,就返回默認(rèn)值(默認(rèn)返回的是組中第一行)

SAMPLE :下面的例子中列 prev_sal 返回按 hire_date 排序的后 1 行的 salary

SELECT

first_name||' '||last_name employee_name,

hire_date,

salary,

LAG(salary, 1, 0) OVER (ORDER BY hire_date) AS prev_sal,

LEAD(salary, 1,0) OVER (ORDER BY hire_date) AS "next_sal"

FROM employees

Oracle分析函數(shù)四——函數(shù)RANK,DENSE_RANK,FIRST,LAST…

ROW_NUMBER

功能描述:返回有序組中一行的偏移量,從而可用于按特定標(biāo)準(zhǔn)排序的行號。

SAMPLE :下例返回每個員工再在每個部門中按員工號排序后的順序號

SELECT

department_id,

first_name||' '||last_name employee_name,

employee_id,

ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY employee_id) AS emp_id

FROM employees

Oracle分析函數(shù)四——函數(shù)RANK,DENSE_RANK,FIRST,LAST…

Oracle分析函數(shù)四——函數(shù)RANK,DENSE_RANK,FIRST,LAST…


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久受www免费人成看片 | 一区二区免费 | 神马午夜不卡片 | 国产a区 | 色黄视频网站 | 久久国产亚洲 | 天天爱天天做久久天天狠狼 | 亚洲国产91 | 国产精品视频网 | 成年视频在线观看免费 | 亚洲国产日韩在线一区 | 2022国产成人福利精品视频 | 香蕉视频观看 | 一区二区三区久久 | 一级毛片视频免费观看 | 五月婷婷六月丁香 | 亚洲综合色在线 | 亚洲婷婷综合中文字幕第一页 | 日韩第一页在线 | 午夜视频网址 | 亚洲欧洲视频 | 碰碰碰精品视频在线观看 | 久久久91精品国产一区二区三区 | 一级三级黄色片 | 国产美女一区二区三区 | 色综合久久88色综合天天 | 国产福利高清在线视频 | 国产一区二区久久 | 亚洲欧美综合网 | 日本高清www午色夜黄 | 免费中文视频 | 欧美日韩综合在线视频免费看 | 丁香花成人另类小说 | 色婷婷基地 | 久久性 | 日韩a在线看免费观看视频 五月天激情视频在线观看 成人97在线观看免费高清 | 久久99精品久久 | 天天久久狠狠色综合 | 日韩久久精品 | 日韩视频免费 | 黄色免费网站在线观看 |