oracle分组汇总人数,Oracle实现分组统计记录
今天剛上班不久,QQ滴滴的響個(gè)不停,看了下信息是一個(gè)網(wǎng)友要我?guī)兔ο乱粋€(gè)SQL語句,大體意思是:統(tǒng)計(jì)heart_active字段為不同情況的記錄數(shù),然后按時(shí)間來分組。
我想了下,心里想這好辦,于是馬上建了一個(gè)表,語句如下:
CREATETABLErfid_fixed_heart?(input_datedate,heart_active???VARCHAR2(2));
接下來往rfid_fixed_heart表中插入了數(shù)據(jù),heart_active字段為0和1, input_date中插入YYYY-MM-DD格式的數(shù)據(jù)。
后來就寫了下面兩個(gè)SQL給她,語句一和語句二有點(diǎn)區(qū)別,語句一快一統(tǒng)計(jì)出heart_active字段為不同情況的記錄數(shù),而語句二則只統(tǒng)計(jì)heart_active字段為0和1情況的記錄數(shù),兩個(gè)語句的輸出格式也有不同。具體如下:
語句一:
SELECTa.input_date,?a.heart_active,SUM(decode(a.heart_active,?1,?1,?0,?1))
FROMrfid_fixed_heart?a
GROUPBYa.heart_active,?a.input_date
ORDERBYa.input_dateDESC;
語句二:
SELECTa.input_date,SUM(decode(a.heart_active,'0','1'))ASheart_active_0,SUM(decode(a.heart_active,'1','1'))ASheart_active_1
FROMrfid_fixed_heart?a
GROUPBYa.input_date;
很快就反饋過結(jié)果來了,沒有達(dá)到預(yù)期的效果,但從她的結(jié)果可以看出是由于input_date插入的是YYYY-MM-DD 24HH:MI:SS格式的數(shù)據(jù)導(dǎo)致無法按日期來分組。
既然插入的是YYYY-MM-DD 24HH:MI:SS格式得數(shù)據(jù),要按日期來排序就需要對(duì)input_date使用trunc函數(shù)來截取日期值。
最終把原來的兩個(gè)SQL改成如下語句:
語句三:
SELECTtrunc(a.input_date,'dd'),?a.heart_active,SUM(decode(a.heart_active,?1,?1,?0,?1))
FROMrfid_fixed_heart?a
GROUPBYa.heart_active,?trunc(a.input_date,'dd')
ORDERBYtrunc(a.input_date,'dd')DESC;
語句四:
SELECTtrunc(a.input_date,'dd'),SUM(decode(a.heart_active,'0','1'))ASheart_active_0,
SUM(decode(a.heart_active,'1','1'))ASheart_active_1
FROMrfid_fixed_heart?a
GROUPBYtrunc(a.input_date,'dd');
把語句給那網(wǎng)友后,運(yùn)行滿足要求,OK。對(duì)于SQL語句的編寫需要認(rèn)真考慮數(shù)據(jù)特殊性和表結(jié)構(gòu),那樣才能夠?qū)崿F(xiàn)SQL語句對(duì)不同環(huán)境的適用。
附未使用decode函數(shù)的實(shí)現(xiàn)SQL:
SELECTop_date,?heart_active,SUM(heart_active_0)ASheart_active_0,
SUM(heart_active_1)ASheart_active_1
FROM(SELECTto_char(rfid_fixed_heart.input_date,'yyyy-mm-dd')ASop_date,
heart_activeASheart_active,
CASEheart_active
WHEN'0'THEN
COUNT(heart_active)
ELSE
0
ENDASheart_active_0,
CASEheart_active
WHEN'1'THEN
COUNT(heart_active)
ELSE
0
ENDASheart_active_1
FROMrfid_fixed_heart
GROUPBYinput_date,?heart_active)?a
GROUPBYop_date,?heart_active
ORDERBYop_dateDESC
結(jié)果如下:
原文鏈接:http://www.cnblogs.com/Automation_software/archive/2011/03/02/1968737.html
【編輯推薦】
【責(zé)任編輯:艾婧 TEL:(010)68476606】
點(diǎn)贊 0
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的oracle分组汇总人数,Oracle实现分组统计记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle根据分区移动,Oracle
- 下一篇: 拉格朗日c语言实验报告,拉格朗日插值法C