Oracle內等距查詢

2021-07-25 04:52:34 字數 1964 閱讀 5651

資料表內有列分數字段,分數0~600不等,現在需要統計各個分段內的人數,分段距離為50分計算一次,計算結果類似:

0~50 100

50~100 100

100~150 100

150~200 100

****

方案一:

一般寫法為根據各個分數值進行case when判斷是否在該區間內,然後賦值,**如下:

select xyf,count(1) from (

select (case

when t.xyf >= 0

and t.xyf < 50

then

'0~50'

when

t.xyf >= 50

and t.xyf < 100

then

'50~100'

when

t.xyf >= 100

and t.xyf < 150

then

'100~150'

when

t.xyf >= 150

and t.xyf < 200

then

'150~200'

when

t.xyf >= 200

and t.xyf < 250

then

'200~250'

when

t.xyf >= 250

and t.xyf < 300

then

'250~300'

when

t.xyf >= 300

and t.xyf < 350

then

'300~350'

when

t.xyf >= 350

and t.xyf < 400

then

'350~400'

when

t.xyf >= 400

and t.xyf < 450

then

'400~450'

when

t.xyf >= 450

and t.xyf < 500

then

'450~500'

when

t.xyf >= 500

and t.xyf < 550

then

'500~550'

when

t.xyf >= 550

and t.xyf < 600

then

'550~600'

else

'其他'

end) xyf

from t_grxy_xyf t)

group

by xyf

order

by xyf;

得出結果如下:

優點:根據需求可以方便的調整統計結果,且簡單易寫。

缺點:繁瑣的複製貼上。。。

方案二:

根據分值,對當前分段進行取模,如:分數為120分,取模結果為:120/50=2,所屬分段為:2*50~2*50+50,即100~150之間,實現**如下:

select to_char(a * 50) || '~' || to_char(a * 50 + 50) 分段, count(1) 人數

from (select xyf, trunc(xyf / 50, 0) a from t_grxy_xyf)

group

by a

order

by a;

得出結果如下:

oracle連線查詢 內連線 外連線 全連線

oracle 中的連線可分為,內連線 inner join 外連線 outer join 全連線 full join 不光是oracle 其他很多的資料庫也都有這3 種連線查詢方式 內連線inner join 這是我們經常用的查詢方式,比如select from a,b where a.field1...

oracle查詢資料中包含字段替換其他內容

有個需求,三個頁面型別的表單呼叫同乙個資料表 反饋 計畫 彙總三大類 為了區分三大類,我在表單加了反饋型別字段。計畫表單手動維護,反饋表單的時候,自動填充資料 需要查詢計畫表單維護的資料,反饋型別是計畫了,但是現在是做反饋表單 通過sql的函式replace,實現查詢的時候如果是計畫的,替換成反饋漢...

查詢oracle24小時內切換頻率

column dt format a10 column dy format a7 column total format 999 column h0 format 99 column h1 format 99 column h2 format 99 column h3 format 99 colum...