国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PostgreSQL數(shù)據庫以任意時間間隔聚合查詢group by

這篇具有很好參考價值的文章主要介紹了PostgreSQL數(shù)據庫以任意時間間隔聚合查詢group by。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

業(yè)務場景

  • 我們做的是智慧交通信控平臺,需要將實時采集到的交通大數(shù)據(信號機燈態(tài)、卡口過車、雷達數(shù)據等)全部入庫,按照時間順序存儲
  • 然后根據原始數(shù)據,再計算出一些交通評價指標,存儲到數(shù)據庫,供后續(xù)聚合查詢和分析統(tǒng)計
  • 前端設備(信號機、雷達、卡口等)上報原始數(shù)據,按照各自定義好的數(shù)據格式,使用socket上報給服務端
  • 我們使用的編程語言是Java,所以服務端使用netty接收
  • 實時接收的數(shù)據,經過kafka批量發(fā)送到采集服務,進行數(shù)據融合處理,批量寫入clickhouse數(shù)據庫
  • 根據clickhouse里的原始數(shù)據,按照信控周期(相位或周期)或者固定時間(5分鐘),計算出數(shù)據指標,再存儲PostgreSQL數(shù)據庫
  • 服務端展示時,一部分查詢已有數(shù)據指標列表,一部分要按照不同時間粒度再對數(shù)據指標進行聚合展示
  • 我們業(yè)務數(shù)據庫用的是PostgreSQL,目前使用的版本為14.2

以固定時間(年/月/日/時/分/秒)聚合

  • 第一種聚合需求,按照固定時間聚合,例如我們展示時,其中2個聚合粒度為:小時
    PostgreSQL數(shù)據庫以任意時間間隔聚合查詢group by
  • 對于日期,我們可以存儲時間戳、毫秒數(shù)、字符串等,處理時再根據相應類型轉換下即可
  • 日期時間一般是 年、月、日、時、分、秒,這六種都可以直接取到,所以精確到這些粒度都比較簡單

to_char聚合

  • 下面給出一個使用to_char函數(shù)的實現(xiàn),其實主要就是做下字符串截取
  • 注意,函數(shù)里需要標注參數(shù)類型,使用::DATE標注
to_char(date::DATE, 'YYYY') as year
to_char(date::DATE, 'YYYY-MM') as month
to_char(date::DATE, 'YYYY-MM-DD') as day
to_char(date::DATE, 'YYYY-MM-DD  HH24') as hour
to_char(date::DATE, 'YYYY-MM-DD  HH24:MI ') as minute
to_char(date::DATE, 'YYYY-MM-DD  HH24:MI:SS ') as second

date_trunc聚合

  • 使用date_trunc也可以做到上面的效果,還可以加上不同時區(qū)
SELECT date_trunc('hour', TIMESTAMP '2001-02-16 20:38:40');
Result: 2001-02-16 20:00:00
SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40');
Result: 2001-01-01 00:00:00
SELECT date_trunc('day', TIMESTAMP WITH TIME ZONE '2001-02-16
 20:38:40+00');
Result: 2001-02-16 00:00:00-05
SELECT date_trunc('day', TIMESTAMP WITH TIME ZONE '2001-02-16
 20:38:40+00', 'Australia/Sydney');
Result: 2001-02-16 08:00:00-05
SELECT date_trunc('hour', INTERVAL '3 days 02:47:33');
Result: 3 days 02:00:00

以任意時間聚合

  • 第二種需求,就是按照一定時間粒度聚合,例如我們的其中兩種聚合粒度為:5分鐘、15分鐘
  • 對于以任意時間聚合,就比較麻煩了,還需要數(shù)學計算,SQL寫起來會特別長
  • 這個問題在PostgreSQL14之后得到解決,因為這個版本增加了一個新函數(shù)支持date_bin
  • 官方文檔描述為:The function date_bin “bins” the input timestamp into the specified interval (the stride) aligned with a specified origin.
  • 渣翻一下為函數(shù)date_bin將輸入時間戳“存儲”到與指定原點對齊的指定間隔(步長)中。
  • 有了這個函數(shù)后,我們可以很方便的根據任意時間間隔聚合
  • 對齊時間可以根據你的需要寫,如果都是今年的新數(shù)據,你寫2023-01-01都沒問題

date_bin聚合

  • 下面給出幾個示例
SELECT date_bin('15 minutes', TIMESTAMP '2020-02-11 15:44:17',
 TIMESTAMP '2001-01-01');
Result: 2020-02-11 15:30:00
SELECT date_bin('15 minutes', TIMESTAMP '2020-02-11 15:44:17',
 TIMESTAMP '2001-01-01 00:02:30');
Result: 2020-02-11 15:32:30

實際應用示例

  • 根據我們的業(yè)務場景,按照15分鐘聚合
  • 其實時間間隔15 minutes,是作為參數(shù)傳遞進去的,其他時間間隔也都可以實現(xiàn)
  • 給一個官方文檔地址:PostgreSQL14
SELECT
	intersection_id,
	approach,
	date_bin ( '15 minutes', time_stamp, TIMESTAMP '2023-01-01' ) AS time_stamp2,
	SUM ( traffic_flow ) AS traffic_flow,
	round( AVG ( congestion_index ) :: NUMERIC, 2 ) AS congestion_index,
	round( AVG ( saturation ) :: NUMERIC, 2 ) AS saturation,
	round( AVG ( queue_length ) :: NUMERIC, 2 ) AS queue_length,
	round( AVG ( delay ) :: NUMERIC, 2 ) AS delay 
FROM
	situation_analysis_intersection 
WHERE
	intersection_id = 1687005 
	and approach = 'WB'
	AND time_stamp >= '2023-04-20 00:00:00' 
	AND time_stamp < '2023-04-29 00:00:00' 
GROUP BY
	time_stamp2,
	intersection_id,
	approach 
ORDER BY
	time_stamp2 
	LIMIT 20 OFFSET 0
  • 其中date_bin ( '15 minutes', time_stamp, TIMESTAMP '2023-01-01' ) AS time_stamp2 就是把時間戳time_stamp處理下,按照15分鐘對齊后作為time_stamp2
  • 下面的GROUP BY time_stamp2,就是再根據對齊后的time_stamp2進行分組聚合統(tǒng)計,完美符合需求

文章來源地址http://www.zghlxwxcb.cn/news/detail-432529.html

到了這里,關于PostgreSQL數(shù)據庫以任意時間間隔聚合查詢group by的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • postgresql|數(shù)據庫|MySQL數(shù)據庫向postgresql數(shù)據庫遷移的工具pgloader的部署和初步使用

    postgresql|數(shù)據庫|MySQL數(shù)據庫向postgresql數(shù)據庫遷移的工具pgloader的部署和初步使用

    MySQL數(shù)據庫和postgresql數(shù)據庫之間的差異并不多,這里的差異指的是對SQL語言的支持兩者并不大,但底層的東西差異是非常多的,例如,MySQL的innodb引擎概念,數(shù)據庫用戶管理,這些和postgresql相比是完全不同的(MySQL用戶就是用戶,沒有角色,postgresql有用戶,有角色,但差異不

    2024年02月14日
    瀏覽(36)
  • MySQL數(shù)據庫,聚合查詢

    MySQL數(shù)據庫,聚合查詢

    目錄 1、聚合查詢 1.1聚合函數(shù) 1.1.1count函數(shù) 1.1.2sum函數(shù) 1.1.3avg函數(shù) 1.1.4max函數(shù) 1.1.5min函數(shù) 1.2group by子句 1.3having 聚合函數(shù)查詢又叫函數(shù)查詢,它是通過一些特定的函數(shù)根據需求來查詢相關的信息,常見的聚合函數(shù)為: COUNT - 求總數(shù),不包含某字段為null值 SUM - 求和,不包含某字

    2023年04月21日
    瀏覽(34)
  • 【MySql】數(shù)據庫的聚合查詢

    【MySql】數(shù)據庫的聚合查詢

    寫在最前面的話 ????????哈嘍,寶子們,今天給大家?guī)淼氖荕ySql數(shù)據庫的聚合查詢。在前面CRUD章節(jié)我們學習了表達式查詢,表達式查詢是針對列和列之間進行運算的,那么如果想在行和行之間進行運算,那么就需要用到聚合查詢。 聚合查詢除了包含聚合函數(shù)外(count,

    2024年02月09日
    瀏覽(23)
  • 允許任意IP訪問mysql數(shù)據庫

    問題描述 MYSQL默認只能本地連接,即127.0.0.1和localhost,其他主機IP無法訪問數(shù)據庫,否則會出現(xiàn)如下報錯信息: Host is not allowed to connect to this MySQL server 一、先在本地用localhost用戶登錄MYSQL 二、查詢用戶表 三、、設置允許任意IP訪問,執(zhí)行語句: 四、刷新權限 五、在其他主機

    2024年02月11日
    瀏覽(27)
  • 【數(shù)據庫】什么是 PostgreSQL?開源數(shù)據庫系統(tǒng)

    【數(shù)據庫】什么是 PostgreSQL?開源數(shù)據庫系統(tǒng)

    PostgreSQL 是一個開源的對象關系數(shù)據庫系統(tǒng),本文,我們將討論 PostgreSQL、它的用途和好處。 PostgreSQL 是由 PostgreSQL Global Development Group 開發(fā)的高級 開源關系數(shù)據庫管理系統(tǒng)(RDBMS) 。它作為 POSTGRES 項目的一部分于 1986 年在加州大學伯克利分校啟動,它最初于 1996 年 7 月 8 日發(fā)布

    2023年04月08日
    瀏覽(32)
  • postgresql數(shù)據庫定時備份到遠程數(shù)據庫

    postgresql數(shù)據庫定時備份到遠程數(shù)據庫

    1.老規(guī)矩,服務器目錄結構: conf目錄無內容 profile: 其中: 最后一行 export PGPASSWORD=‘root’ 是需要備份的數(shù)據庫的密碼,因為直接用 pg_dump 命令備份需要輸入密碼交互,而我們需要達到自動備份,所以借助這種方式不需要輸入密碼 docker-compose.yml: 啟動容器: 然后再data目錄下面

    2024年02月09日
    瀏覽(22)
  • PostgreSQL Linux操作PostgreSQL數(shù)據庫

    PostgreSQL教程 菜鳥教程:https://www.runoob.com/postgresql/postgresql-tutorial.html 登錄PG數(shù)據庫:psql -U 用戶名(U需要大寫) 登錄PG數(shù)據庫(指定主機、端口,并進入指定數(shù)據庫): psql -U 用戶名 -h 127.0.0.1 -p 5432 -d 數(shù)據庫名 -U 登錄的用戶名 -h 連接的主機(默認127.0.0.1,可替換成遠程主機

    2024年02月11日
    瀏覽(28)
  • 探索存證、溯源類數(shù)據庫最優(yōu)解,聚合數(shù)據區(qū)塊鏈數(shù)據庫AnchorDB發(fā)布

    探索存證、溯源類數(shù)據庫最優(yōu)解,聚合數(shù)據區(qū)塊鏈數(shù)據庫AnchorDB發(fā)布

    近日,聚合數(shù)據區(qū)塊鏈數(shù)據庫AnchorDB 正式對外發(fā)布,這是企業(yè)對于數(shù)字化技術應用的又一次探索,產品的發(fā)布,將為存證、溯源類場景提供更高效、易用的數(shù)據庫解決方案,并且進一步豐富聚合數(shù)據的數(shù)字化產品矩陣。 作為一款具有區(qū)塊鏈不可篡改特性的輕量級存證數(shù)據庫,

    2024年02月11日
    瀏覽(22)
  • [運維|數(shù)據庫] docker postgresql數(shù)據庫環(huán)境變量配置

    要配置Docker中的PostgreSQL數(shù)據庫的環(huán)境變量,可以使用以下方法: 使用Docker命令行: 將 用戶名 , 密碼 , 數(shù)據庫名 替換為你想要設置的實際值。這將創(chuàng)建一個名為 mypostgres 的容器,并將 PostgreSQL 的用戶名、密碼和數(shù)據庫名設置為指定的值。 -p 5432:5432 指定了容器內部和主機之間

    2024年02月09日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包