Group By一定時間內歸為同一組

SQL是可以具備一定程度的資料清洗與整理功能,例如找出特定資料、剃除重複等等,而通常進行分析統計的時候,最常使用的是Group By功能,而有種情況需要對時間欄位進行分組,就是一定時間內,例如30秒內的當作同一組,這樣的SQL要怎麼下呢?

原理很簡單,就是透過取餘數的方式,將時間轉換為數字,然後減掉與30的相除的餘數,那只要在30的範圍內,因為數字相同就會被歸為同一組,以下用MySQL示範,時間轉換為數字,透過UNIX_TIMESTAMP函式(單位秒)。

分組SQL(以下以30秒內的資料為一組)

SELECT `Datetime` ,`Column1`,`Column2`,`Column3`, `Column4` FROM `table` GROUP BY UNIX_TIMESTAMP(`Datetime`)-UNIX_TIMESTAMP(`Datetime`)%30,`Column1`,`Column1`,`Column1`, `Column1`

那看看這個Group By內的欄位資料長怎樣

SELECT `Datetime`,UNIX_TIMESTAMP(`Datetime`)-UNIX_TIMESTAMP(`Datetime`)%(0.5*60),UNIX_TIMESTAMP(`Datetime`),UNIX_TIMESTAMP(`Datetime`)%30 FROM `apr_missed` WHERE 1
DatetimeUNIX_TIMESTAMP(Datetime)-UNIX_TIMESTAMP(Datetime)%30UNIX_TIMESTAMP(Datetime)UNIX_TIMESTAMP(Datetime)%30
2022-07-21 19:07:521658401650.0165840167222
2022-07-21 19:07:541658401650.0165840167424
2022-07-21 20:22:481658406150.0165840616818
2022-07-21 20:22:491658406150.0165840616919
2022-07-21 21:07:491658408850.0165840886919
2022-07-21 21:07:501658408850.0165840887020

More From Forest Beat

桜のフリ

設定Docker中node-Red的掛載

容器最強的部份,就是把資料分離出來,因此要設定給容器一個host的掛載位置,那麼設定檔與資料內容就會分離出來,並存放在host的資料夾中。在Synology NAS,要先建好一個給Docker專用的「共用資料夾」,然後在該共用下建立新的資料夾,記得要設定為明確權限,並且給予Everyone的寫入權限,這樣就可以囉。
技術
0
minutes
三ツ峠の紅葉のフリ

Docker安裝node-Red設定檔settings.js的位置

如果採用不將資料掛載出來的方式建立dockek的NodeRED,那設定檔會在哪邊呢? 要如何進行修改呢?答案很簡單,要能夠終端機到容器中,然後編輯/usr/src/node-red/node_modules/node-red/settings.js
技術
0
minutes
チューリップ畑のフリ

Docker使用bridge與host網路的差異

Docker使用bridge網路的好處是封閉但是可以聯網,容器彼此之間也無法辦訪,可以做到簡單的隔離,port可以與host重複,反正在轉port即可。host網路就有點危險了,就是實實在在以host的網路進行連線,因此同網路中,能夠看見它,除此之外,不可以與host主機使用相同的port,例如80已經被host用掉的,就不能再容器中使用80。
技術
0
minutes
つくしのフリ

用Docker佈署新的服務

下載專用的Image檔後,就可以副本產生容器,所以要有多少個都沒問題。因為是共用Image檔案所以會很省空間,另外資料可以掛載出來,這樣又能做到完全分離,例如Mariadb資料庫,可以把資料與設定檔掛載出來,日後要重灌或更新容器就很簡單。
技術
0
minutes
spot_imgspot_img