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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle需求分析,8-oracle_分析函数(二)

發(fā)布時間:2023/12/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle需求分析,8-oracle_分析函数(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1): Lead(),Lag()

其實這2個函數(shù)的作用非常好理解,Lead()就是取當前順序的下一條記錄,相對Lag()就是取當前順序的上一行記錄。

經(jīng)常會有判斷在一定條件下的兩條記錄之間的時間差、或者數(shù)值差這樣的需求。

比如有一個員工號+部門+銷售金額的表結(jié)構(gòu),現(xiàn)在求出每個部門的后一名與前一名的銷售金額差,每個部門的第一個差異為0

select

user_no,

dept_code,

sales_amt,

lag

(sales_amt,

1

, sales_amt)

over

(

partition

by

dept_code

order

by

sales_amt

desc

) lag_amt,

--

上一條金額

lag

(sales_amt,

1

, sales_amt)

over

(

partition

by

dept_code

order

by

sales_amt

desc

) - sales_amt diff_amt

--

差異金額

from

t_sales;

lag(sales_amt, 1, sales_amt):第一個參數(shù)表示取的數(shù)(示例取的:sales_amt),第二個參數(shù)表示兩條記錄相隔的間距,1表示上下兩條(第2行的lag_amt取第一行的sales_amt,第3條取第2行的sales_amt),2表示第1條和第3條記錄,第三個參數(shù)表示第一行時找不到上面一條記錄則顯示的數(shù)(所以003用戶的lag_amt顯示的是自己金額6734)。

理解了lag()函數(shù)后對lead()函數(shù)的理解就容易了,就是第一條記錄取第二條錄的sales_amt信息,取后一條則取自己的sales_amt信息

2): sum() over(partition by)

此函數(shù)功能用于按分區(qū)求和,與group by不同的是,他可以帶出一些非group by字段的信息,對于一些求占比的需求很方便。

比如我們需要計算每個員工的銷售金額占部門總銷售金額的比率

select

user_no,

dept_code,

sales_amt,

sum

(sales_amt)

over

(

partition

by

dept_code) dept_all_amt,

--

部門總金額

sales_amt /

sum

(sales_amt)

over

(

partition

by

dept_code) amt_rt

--

員工占部門金額比率

from

t_sales;

sum(sales_amt) over(partition by dept_code):sum()表示求和的字段,partition by表示按什么分區(qū)求和匯總。

3): max() over(partition by), min() over(partition by)等都是按分區(qū)求最大值和最小值。各位可以按需求套用相關(guān)的分析函數(shù)。

更多技術(shù)文章請關(guān)注公眾號:BLT328

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的oracle需求分析,8-oracle_分析函数(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。