sql語句求百分比

2021-09-08 10:33:39 字數 1489 閱讀 8426

此sql語句包括了兩個聚合函式做除法求百分比,並保留兩位小數,直接輸出字串形式的百分比。以及對case when在聚合函式的應用。

select

ss.ss_name,ss_id,

count(ea.ea_id) as eacounts,--

回單交換單個數

count(eb.eb_id) as ebcounts,--

交換單個數

count(ps.ps_id) as pscounts,--

簽收單個數

count(sw_id) as swcounts,--

運單數個數

count(case

when ps_status=

1then

'ps_id

'end) as psscounts,--

簽收成功單個數

cast(convert( decimal(18,2),count(ea.ea_id)/

cast(isnull(nullif(count(eb_id),0),1) as

float)*

100)as

varchar(10))+'%

'as returnper,--

回單率cast(convert(decimal(18,2),count(ps.ps_id)/

cast(isnull(nullif(count(sw_id),0),1) as

float)*

100)as

varchar(10))+'%

'as signper ,--

簽收率cast(convert(decimal(18,2),count(case

when ps_status=

1then

'ps_id

'end)/

cast(isnull(nullif(count(ps_id),0),1) as

float)*

100 ) as

varchar(10))+'%

'as signsucper --

簽收成功率

from

dbo.sbd_waybill sw

left

join dbo.pda_sininfo ps on sw.sw_id=

ps.ps_sw_id

left

join dbo.sbd_exchange_return_bill ea on ea.ea_sw_id=

sw.sw_id

left

join dbo.sbd_exchange_bill eb on eb.eb_sw_id=

sw.sw_id

left

join dbo.sbd_station ss on ss.ss_id=

sw.sw_destination

where1=

1group

byss_id,ss_name

order

by ss_name

SQL求總和的百分比

先通過group by得到每個分類別的總和,再通過開窗函式計算整體的總和,兩者相除就得到佔比了。當over 後不加任何內容時,就是對所有的資料進行彙總。在oracle中,也可以使用專門的比例函式 ratio to report 來直接計算 上述操作可以更改如下 select sites id,cha...

oracle 求百分比

oracle求百分比 例子 求name為dead的記錄所佔百分比 select tt.retrieve retrievedrate,tc.公司名稱 companyname,tc.部門名稱 deptname,tc.使用者名稱 username,tc.nodename nodename,tc.proce...

sql 累計佔比 SQL語句 求總和的百分比

問題 求特定列中的值佔總和的百分比。例如,確定所有deptno 10工資佔總工資的百分比 deptno 10的工資在總工資中的百分比數 解決方案 總的來說,在sql中計算佔總數的百分比跟書面計算一樣 先除後乘。這個例子要計算表emp中deptno 10工資所佔的百分比。首先,算出deptno 10的...