年齡段統(tǒng)計可用case when 語句。

創(chuàng)新互聯(lián)公司長期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為當(dāng)涂企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、做網(wǎng)站,當(dāng)涂網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
如test表中有以下數(shù)據(jù):
其中18-29歲為青年,30-49歲為中年,50歲以上為老年,先統(tǒng)計各個年齡段人數(shù),可用如下語句:
select?case?when?age?between?18?and?29?then?'青年'?when?age?between?30?and?59?then?'中年'?when?age=60?then?'老年'?end?as?年齡段,
count(*)?as?人數(shù)?
from?test
group?by?case?when?age?between?18?and?29?then?'青年'?when?age?between?30?and?59?then?'中年'?when?age=60?then?'老年'?end;
統(tǒng)計結(jié)果:
根據(jù)出生日期查詢年齡用的還挺多的。
簡單分析一下,加入一個孩子五歲半了,那習(xí)慣認(rèn)為他還是5歲。
用Oracle提供的months_between()函數(shù),先獲取出生日期和當(dāng)前日期的月數(shù),然后除以12向下取整:
使用的時候,將時間段替換成出生日期對應(yīng)的字段即可。
如果,計算年齡用的次數(shù)非常多,最好寫成自定義函數(shù)。
這個辦法很多,如果是比較精確的可以用month_between函數(shù),然后除以12,最后在trunc這樣就能得到具體的年齡了。
比如trunc(month_between(sysdate,時間類型的生日字段)/12)
個人感覺這個精確一些,能精確到天,只要還沒過生日,那么就不會加一歲。
當(dāng)然二者直接相減trunc((sysdate-時間類型的生日字段)/365)也可以。
sysdate-時間類型的生日字段,這么相減默認(rèn)出現(xiàn)的是相差的天數(shù),所以除以365。這個也可以,不過有些年是366天,不過因為366天的年分比較少,所以基本上不會相差很多。只是會出現(xiàn),“提前”的情況。不過80年最多才21天(大概是這樣,我沒細(xì)算,就算四年一次),所以對實際影響不是特別大。如果要求準(zhǔn)確那么還是上面的靠譜一些。
用函數(shù)取出字段年,然后用現(xiàn)在的年相減也可以。這個就是一個大概(個人認(rèn)為更加不靠譜),比如一個人2050年12月30日出生,現(xiàn)在是2055年后的1月1號,那么按照年來說就是5,但是其實才4歲多一點,所以年這個只是一個大概的,不會十分準(zhǔn)確。
SELECT ROUND(MONTHS_BETWEEN(SYSDATE,PBIRTHDAY)/12) age FROM MEMB_OF_BEDROOM;(其中PBIRTHDAY是你表的那個時期列名,如果你給的設(shè)計結(jié)構(gòu)中名稱是真實的物理代碼名稱的話。。)。
順道提醒兩點:
1.請確定“T.生日”中的生日一列是否真實存在,一般情況下,處于后期隱患考慮,不建議用中文來定義列名。“生日”最好用comment的形式進(jìn)行列別名注釋;
2.getdate()印象中不是oracle的內(nèi)置sql函數(shù),year函數(shù)亦同(除非是自己書寫的存儲函數(shù)),我妄測是講某高級編程語言生搬過來而成。 (一般sql查詢語句在分析時,只分析其內(nèi)在支持的函數(shù)和變量,不屬于其內(nèi)在支持的函數(shù)和變量以及非關(guān)鍵字一律當(dāng)做字符串處理,不負(fù)責(zé)調(diào)用和編譯)
select floor(months_between(to_date(concat(extract(year from sysdate),'-10-31'),'YYYY-MM-DD'),to_date(生日的日期,'yyyy-mm-dd'))/12) from table_name
floor 向下取整
months_between 日期相差的月份數(shù)
concat字字符串連接
extract(year from sysdate) 返回當(dāng)前日期的年份
網(wǎng)頁題目:oracle怎么取年齡段 oracle身份證號提取年齡公式
本文網(wǎng)址:http://chinadenli.net/article6/hpecog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、移動網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、商城網(wǎng)站、電子商務(wù)、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)