国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

后端開發 - mysql按時間分段統計的sql語句怎么寫好?

瀏覽:106日期:2022-06-12 09:01:08

問題描述

我的數據庫表結構如下:

后端開發 - mysql按時間分段統計的sql語句怎么寫好?

字段分別是ID,NUM1,NUM2, TIME1,TIME2, MONEY.

想要按照15分鐘為間隔來統計ID的數量。效果如同下面的sql語句。

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;

后端開發 - mysql按時間分段統計的sql語句怎么寫好?

但是像上面那么寫重復代碼多,并且如果我改成30分鐘的話,就要改動很多,所以求助sql大神,看有什么好的方法。

———————————————————————————————————分割線————————————————————————————————————

謝謝 arm 同志的幫助,現在能查詢出現了

后端開發 - mysql按時間分段統計的sql語句怎么寫好?

count(id)就是進站的人但是有的時間段,根本沒有進站的人,所以有的時間段沒有,例如5:00 -- 5:15 如果要將沒有進站的人的時間段 補全為0,該怎么做呢?

問題解答

回答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 限制時間段,group by里面除以你需要的時間間隔。我不知道你為什么出錯,可能和mysql版本有關,我是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)

結果后端開發 - mysql按時間分段統計的sql語句怎么寫好?看了下,跑的還是蠻快的,0.3s不到

回答2:

列數不定啊,真的定義不少變量

回答3:

腳本驅動MySQL ,定制一個變量。也許有更好的辦法,我就閑的回答了下

相關文章:
主站蜘蛛池模板: 大姚县| 沧州市| 怀远县| 安丘市| 盖州市| 社会| 屏东市| 邓州市| 浦东新区| 望奎县| 阿克陶县| 卓尼县| 丹阳市| 长顺县| 宝坻区| 安义县| 博罗县| 德令哈市| 鄂州市| 丘北县| 焦作市| 新乡市| 通州市| 玉山县| 青阳县| 玉门市| 嘉鱼县| 泉州市| 江都市| 乐亭县| 浪卡子县| 光泽县| 赫章县| 乌苏市| 望都县| 锦州市| 无棣县| 莲花县| 繁昌县| 若羌县| 江安县|