最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql實(shí)現(xiàn)按照某個(gè)時(shí)間段分組統(tǒng)計(jì)

 更新時(shí)間:2022年10月11日 11:22:39   作者:Rum?chen  
這篇文章主要介紹了mysql實(shí)現(xiàn)按照某個(gè)時(shí)間段分組統(tǒng)計(jì)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mysql按照某個(gè)時(shí)間段分組統(tǒng)計(jì)

今天剛好是碰到一個(gè)報(bào)表需求,要求根據(jù)時(shí)段統(tǒng)計(jì)各工單的數(shù)量。這個(gè)就有點(diǎn)皮實(shí)了,以前都沒(méi)搞過(guò)這玩意。于是研究了幾下。

準(zhǔn)備開始

首先一個(gè)問(wèn)題,想根據(jù)時(shí)間段進(jìn)行統(tǒng)計(jì),這個(gè)問(wèn)題先不考慮,先考慮,如果按照一小時(shí)統(tǒng)計(jì)呢,該怎么去做,于是就一頓操作,寫出以下sql,這個(gè)基本的相信沒(méi)什么難度,主要是說(shuō),怎么去單獨(dú)拿到小時(shí),這里用到“DATE_FORMAT”函數(shù)。

SELECT
	DATE_FORMAT( create_order_time, '%H' ) AS h,
	COUNT( 1 ) 
FROM
	order_item 
GROUP BY
	DATE_FORMAT( create_order_time, '%H' )
ORDER BY
	DATE_FORMAT( create_order_time, '%H' )

到這里,小時(shí)統(tǒng)計(jì)沒(méi)問(wèn)題了,那么怎么改造成符合我的需求呢,請(qǐng)看圖片

相信聰明的人已經(jīng)感覺(jué)出來(lái)的,就是其實(shí)把我們?nèi)〉降男r(shí)去除以時(shí)間段的區(qū)間取整數(shù),那么就可以得到同一區(qū)間的數(shù)據(jù),然后這個(gè)數(shù)字在乘回去我們的區(qū)間,就可以得到上限,在加區(qū)間就是下限,最終我們得到的SQL

-- 	區(qū)間數(shù)字SQL
SELECT
	(FLOOR(DATE_FORMAT( create_order_time, '%H' ) / 2) * 2) AS h2,
	COUNT( 1 ) 
FROM
	order_item 
GROUP BY
	FLOOR(DATE_FORMAT( create_order_time, '%H' ) / 2)
ORDER BY
	FLOOR(DATE_FORMAT( create_order_time, '%H' ) / 2)

-- 最終SQL
SELECT
	 CONCAT(
	 FLOOR( DATE_FORMAT( create_order_time, '%H' ) / 2 ) * 2,
	 '-',
	 FLOOR( DATE_FORMAT( create_order_time, '%H' ) / 2 ) * 2 + 2)
	 AS h2,
	COUNT( 1 ) 
FROM
	order_item 
GROUP BY
	FLOOR( DATE_FORMAT( create_order_time, '%H' ) / 2 ) 
ORDER BY
	FLOOR( DATE_FORMAT( create_order_time, '%H' ) / 2 )

樣圖

mysql區(qū)間分組統(tǒng)計(jì)

場(chǎng)景

表cases,有完成時(shí)間(finish_time),id等字段

現(xiàn)在將finish_time按時(shí)間區(qū)間劃分年份

例 2021-11-01 00:00:00 ~2022-10-31 23:59:59 為2022年

下面是模擬數(shù)據(jù):

idfinish_time
12019-01-23 23:23:23
22019-02-28 12:12:12
32020-08-12 08:12:12
42021-05-12 22:12:43
52022-05-12 23:23:23

統(tǒng)計(jì)結(jié)果應(yīng)該如下所示:

年份數(shù)量
20192
20201
20211
20221

因?yàn)椴荒茉赾ases表中添加字段,上網(wǎng)搜尋后找到兩個(gè)方法:

  • 1、利用了mysql提供的interval和elt函數(shù)實(shí)現(xiàn)了效果。
  • 2、是建一張中間表用來(lái)分組

利用了mysql提供的interval和elt函數(shù)實(shí)現(xiàn)了效果

interval

interval(N,N1,N2,N3) ,比較列表中的N值,該函數(shù)如果N<N1返回0,如果N<N2返回1,如果N<N3返回2 等等。

elt

elt(n,str1,str2,str3,…) 如果n=1,則返回str1,如果n=2,則返回str2,依次類推

兩個(gè)函數(shù)結(jié)合,再加上group,實(shí)現(xiàn)了這種范圍分組的效果

select elt(interval(finish_ime,'2019-11-01','2020-11-01','2021-11-01','2022-11-01'),2019,2020,2021,2022) as i,count(*)
from cases
group by i

但實(shí)際效果不盡人意,也許是因?yàn)閙ysql中interval也是處理日期的關(guān)鍵字吧,interval()函數(shù)對(duì)日期進(jìn)行劃分的時(shí)候每次都劃分到最后一個(gè)區(qū)間,因此使用第二種辦法即建一張中間表用來(lái)劃分

建中間表

創(chuàng)建如下一張中間表(tmp)

start_dateend_dateyear
2018-11-01 00:00:002019-10-31 23:59:592019
2019-11-01 00:00:002020-10-31 23:59:592020
2020-11-01 00:00:002021-10-31 23:59:592021
2021-11-01 00:00:002022-10-31 23:59:592022

cases表通過(guò)join連接這張表就可以實(shí)現(xiàn)分組效果

?? ?select count(*) as '數(shù)量', t.`year` as "年份"
?? ?from cases c left join tmp t on c.finish_time>=t.start_date and?
?? ??? ??? ??? ??? ??? ??? ??? ??? ?c.finish_time<=t.end_date?
?? ?group by t.`year`

這樣就可以在不修改原有表結(jié)構(gòu)的基礎(chǔ)上實(shí)現(xiàn)區(qū)間分組統(tǒng)計(jì)。

通過(guò)函數(shù)來(lái)劃分區(qū)間

創(chuàng)建函數(shù)get_year()

create function get_year(finishTime datetime) returns int
begin
? ? declare d_year int(4);
? ? set d_year = year(finishTime);
? ? if (finishTime >= concat(d_year, '-11-01 00:00:00')) then
? ? ? ? return d_year + 1;
? ? else
? ? ? ? return d_year;
? ? end if;
end;
?? ?select count(*) as '數(shù)量',get_year(c.finish_ime) as "年份"
?? ?from cases c?
?? ?group by get_year(c.finish_ime)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL8.0.26的安裝與簡(jiǎn)化教程(全網(wǎng)最全)

    MySQL8.0.26的安裝與簡(jiǎn)化教程(全網(wǎng)最全)

    MySQL關(guān)是一種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),所使用的 SQL 語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用的標(biāo)準(zhǔn)化語(yǔ)言,今天通過(guò)本文給大家分享MySQL8.0.26的安裝與簡(jiǎn)化教程使全網(wǎng)最詳細(xì)的安裝教程,需要的朋友參考下吧
    2021-07-07
  • MySQL數(shù)據(jù)存儲(chǔ)路徑修改的超詳細(xì)教程

    MySQL數(shù)據(jù)存儲(chǔ)路徑修改的超詳細(xì)教程

    在生產(chǎn)環(huán)境下,mysql的數(shù)據(jù)、索引都會(huì)很大,而mysql的默認(rèn)存儲(chǔ)路徑是/val/lib/mysql,這就出現(xiàn)了問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)存儲(chǔ)路徑修改的超詳細(xì)教程,需要的朋友可以參考下
    2023-03-03
  • 在centOS 7安裝mysql 5.7的詳細(xì)教程

    在centOS 7安裝mysql 5.7的詳細(xì)教程

    這篇文章主要介紹了在centOS 7安裝mysql 5.7的詳細(xì)教程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2016-12-12
  • Linux下啟動(dòng)多個(gè)mysql服務(wù)器例子

    Linux下啟動(dòng)多個(gè)mysql服務(wù)器例子

    這篇文章主要介紹了Linux下啟動(dòng)多個(gè)mysql服務(wù)器例子,本文還包括了3個(gè)可能遇到的問(wèn)題及解決方法,需要的朋友可以參考下
    2014-07-07
  • mysql密碼忘記怎么辦

    mysql密碼忘記怎么辦

    mysql密碼忘記怎么辦?卸載重裝?這篇文章主要為大家詳細(xì)介紹了不卸載也能重新設(shè)置密碼的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • MySQL三種打開方式詳細(xì)圖文教程

    MySQL三種打開方式詳細(xì)圖文教程

    MySQL有多種打開方式,具體取決于你的操作系統(tǒng)和安裝方式,下面這篇文章主要給大家介紹了關(guān)于MySQL三種打開方式的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • MySql 5.6.36 64位綠色版安裝圖文教程

    MySql 5.6.36 64位綠色版安裝圖文教程

    這篇文章主要介紹了MySql 5.6.36 64位綠色版安裝圖文教程,需要的朋友可以參考下
    2017-05-05
  • Mysql使用concat函數(shù)實(shí)現(xiàn)關(guān)鍵字模糊查詢功能(列表數(shù)據(jù)過(guò)濾含前后端代碼)

    Mysql使用concat函數(shù)實(shí)現(xiàn)關(guān)鍵字模糊查詢功能(列表數(shù)據(jù)過(guò)濾含前后端代碼)

    在我們的平時(shí)開發(fā)中經(jīng)常會(huì)遇到根據(jù)條件過(guò)濾列表數(shù)據(jù)項(xiàng),今天在做自己項(xiàng)目的時(shí)候就遇到了這個(gè)問(wèn)題,正好借著這個(gè)機(jī)會(huì)分享我的思路以及相關(guān)的代碼,對(duì)Mysql使用concat函數(shù)實(shí)現(xiàn)關(guān)鍵字模糊查詢功能感興趣的朋友一起看看吧
    2023-02-02
  • mysql如何將查詢結(jié)果插入到另一張表中

    mysql如何將查詢結(jié)果插入到另一張表中

    這篇文章主要介紹了mysql如何將查詢結(jié)果插入到另一張表中問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • MySQL中JSON_CONTAINS用法、語(yǔ)法、示例及其應(yīng)用場(chǎng)景

    MySQL中JSON_CONTAINS用法、語(yǔ)法、示例及其應(yīng)用場(chǎng)景

    這篇文章主要介紹了MySQL中JSON_CONTAINS用法、語(yǔ)法、示例及其應(yīng)用場(chǎng)景的相關(guān)資料,JSON_CONTAINS函數(shù)用于檢查JSON文檔是否包含特定值或?qū)ο?這個(gè)函數(shù)非常適合于處理嵌套的JSON數(shù)據(jù)和靈活的查詢需求,需要的朋友可以參考下
    2024-10-10

最新評(píng)論

桦甸市| 石狮市| 宽甸| 廉江市| 临清市| 宁都县| 志丹县| 安徽省| 论坛| 仁怀市| 洪江市| 泽库县| 溧水县| 美姑县| 托克托县| 洛浦县| 怀柔区| 如东县| 上高县| 瑞昌市| 甘洛县| 竹山县| 开封市| 临海市| 芦山县| 吉安县| 金乡县| 金山区| 维西| 桃江县| 铜山县| 军事| 沈阳市| 吉木萨尔县| 林甸县| 顺义区| 台前县| 镇原县| 铁岭县| 秭归县| 吐鲁番市|