日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle数据库中分析函数大全,Oracle数据库的分析函数

發布時間:2024/7/23 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle数据库中分析函数大全,Oracle数据库的分析函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

over 連續的相加

求各部門的薪水總和和全部總和 select name, salary, emp

sum(salary) over (order by emp) 連續求和

sum(salary) over () 總和

100*round(sal/sum(sal) over(), 5) 份額

from company;

sum() = sum over() 求的是總和,

sum over (order by ) 求的是連續的和,即當前部門的結果+=上一個部門查詢的結果

over partition by 分區 select name, salary, emp

sum(salary) over (partition by emp ) 部門總和 # 同一部門總和不變

from company;

over partition by order by 分區內部連續求和 select name, salary, emp

sum(salary) over (partition by emp order by name) 部門內部薪水連續求和

sum(salary) over (partition by emp ) 部門總和 # 同一部門總和不變

from company;

row_number | rank | dense_rank 排名

row_number? 輸出結果名次不跳躍,不重復

根據部門分組,顯示每個部門的工資等級,按照升序排名 select name, salary, emp

row_number() over (partition by emp order by salary) as "排名"

from company;

rank 名次跳躍,針對和總數據條數的對應

語法同上,但是會有并列的情況,且并列的個數會占排序的一個位置

即如果有三個第一名并列,那么第二名的編號為4 select name, salary, emp

rank() over (partition by emp order by salary) as "排名"

from company;

dense_rank 名次不跳躍,針對名次對應的順序

不會產生名次的跳躍,即三個第一名,那么第二名的編號依然為2,用法同上

rollup 針對group by 再次統計,作用于局部字段

根據月份和地區分組,并統計分組的工資總和,(分組的最小單位為地區)。

月份下的不同地區會衍生出多條記錄,因此sum統計的是最小單位的分組記錄 select mouth,area,sum(salary) from company

group by mouth, area;

根據月份和地區分組,并統計分組的工資總和,以及對當前月份工資總和以及所有的匯總

匯總的依據為分組的最大單位,即順序靠前的分組依據; select mouth,area,sum(salary) from company

group by rollup(mouth, area);

cube 對 rollup 的升級,針對全部字段

除了根據 月份匯總外,還根據 地區匯總,并統計所有匯總的總和 select mouth,area,sum(salary) from company

group by cube(mouth, area);

grouping 對聚合結果沒有字段名字的 null 值 設置別名

grouping(parm),帶一個參數,參數為字段名,

如果是本身的結果就返回0,如果是聚合的結果就返回1

case ... vhen ... then ... else ... end 通用SQL條件判斷語句 select mouth,

# 如果是針對月份的統計的結果,返回為0

(case vhen ((grouping(area)=1) and (grouping(mouth)=0) then "月份小記"

# 如果是針對所有結果的總和,

vhen ((grouping(area)=1) and (grouping(mouth)=1) then "總計"

# 如果兩者都為0,那么就是針對地區的統計結果

else area

end) as area, sum(salary)

from company

group by rollup(mouth, area);

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的oracle数据库中分析函数大全,Oracle数据库的分析函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。