資料表內有列分數字段,分數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...