后端開(kāi)發(fā) - mysql按時(shí)間分段統(tǒng)計(jì)的sql語(yǔ)句怎么寫(xiě)好?
問(wèn)題描述
我的數(shù)據(jù)庫(kù)表結(jié)構(gòu)如下:
字段分別是ID,NUM1,NUM2, TIME1,TIME2, MONEY.
想要按照15分鐘為間隔來(lái)統(tǒng)計(jì)ID的數(shù)量。效果如同下面的sql語(yǔ)句。
SELECT sum(CASE when TIME1 >= ’2014-02-27 8:00:00’ and TIME1 < ’2014-02-27 8:15:00’ then 1 else 0 end) AS ’1’, sum(CASE when TIME1 >= ’2014-02-27 8:15:00’ AND TIME1 < ’2014-02-27 8:30:00’ then 1 else 0 end) AS ’2’, sum(CASE when TIME1 >= ’2014-02-27 8:30:00’ AND TIME1 < ’2014-02-27 8:45:00’ then 1 else 0 end) AS ’3’, sum(CASE when TIME1 >= ’2014-02-27 8:45:00’ AND TIME1 < ’2014-02-27 9:00:00’ then 1 else 0 end) AS ’4’, sum(CASE when TIME1 >= ’2014-02-27 9:00:00’ and TIME1 < ’2014-02-27 9:15:00’ then 1 else 0 end) AS ’5’ from dealdata;

但是像上面那么寫(xiě)重復(fù)代碼多,并且如果我改成30分鐘的話,就要改動(dòng)很多,所以求助sql大神,看有什么好的方法。
———————————————————————————————————分割線————————————————————————————————————
謝謝 arm 同志的幫助,現(xiàn)在能查詢出現(xiàn)了

count(id)就是進(jìn)站的人但是有的時(shí)間段,根本沒(méi)有進(jìn)站的人,所以有的時(shí)間段沒(méi)有,例如5:00 -- 5:15 如果要將沒(méi)有進(jìn)站的人的時(shí)間段 補(bǔ)全為0,該怎么做呢?
問(wèn)題解答
回答1:謝邀,可以縱向排列的化,如下
SELECT count(id)from dealdatawhere timestampdiff(minute,’2014-02-27 9:15:00’,`TIME1`)<0 and timestampdiff(minute,’2014-02-27 8:00:00’,`TIME1`)>=0group by floor(timestampdiff(minute,’2014-02-27 8:00:00’,`TIME1`)/15)
where 限制時(shí)間段,group by里面除以你需要的時(shí)間間隔。我不知道你為什么出錯(cuò),可能和mysql版本有關(guān),我是mysql5.6
SELECT count(*),floor(timestampdiff(minute,’2017-1-18 16:00:00’,`time`)/30),date_add(’2017-1-18 16:00:00’,interval 30*floor(timestampdiff(minute,’2017-1-18 16:00:00’,`time`)/30) MINUTE)FROM 我是馬賽克.我是馬賽克group by floor(timestampdiff(minute,’2017-1-18 16:00:00’,`time`)/30)
結(jié)果
看了下,跑的還是蠻快的,0.3s不到
列數(shù)不定啊,真的定義不少變量
回答3:腳本驅(qū)動(dòng)MySQL ,定制一個(gè)變量。也許有更好的辦法,我就閑的回答了下
相關(guān)文章:
1. boot2docker無(wú)法啟動(dòng)2. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””3. docker-compose中volumes的問(wèn)題4. java - SSH框架中寫(xiě)分頁(yè)時(shí)service層中不能注入分頁(yè)類5. nignx - docker內(nèi)nginx 80端口被占用6. javascript - mock.js可以存儲(chǔ)數(shù)據(jù)嗎7. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.8. dockerfile - 為什么docker容器啟動(dòng)不了?9. docker api 開(kāi)發(fā)的端口怎么獲取?10. golang - 用IDE看docker源碼時(shí)的小問(wèn)題

網(wǎng)公網(wǎng)安備