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

編寫sql統(tǒng)計(jì)一段時(shí)間內(nèi),每天、每月、每年的統(tǒng)計(jì)數(shù)據(jù)(PostgreSQL)

這篇具有很好參考價(jià)值的文章主要介紹了編寫sql統(tǒng)計(jì)一段時(shí)間內(nèi),每天、每月、每年的統(tǒng)計(jì)數(shù)據(jù)(PostgreSQL)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

編寫sql統(tǒng)計(jì)一段時(shí)間內(nèi),每天、每月、每年的統(tǒng)計(jì)數(shù)據(jù)(PostgreSQL)

前言

在做數(shù)據(jù)統(tǒng)計(jì)頁面時(shí),總會遇到統(tǒng)計(jì)某段時(shí)間內(nèi),每天、每月、每年的數(shù)據(jù)視圖(柱狀圖、折線圖等)。這些統(tǒng)計(jì)數(shù)據(jù)一眼看過去也簡單呀,不就是按照時(shí)間周期(天、月、年)對統(tǒng)計(jì)數(shù)據(jù)進(jìn)行分個(gè)組就完了嘛?但是會有一個(gè)問題,簡單的寫個(gè)sql對周期分組,獲取到的統(tǒng)計(jì)數(shù)據(jù)是缺失的,即沒有數(shù)據(jù)的那天,整條記錄也都沒有了。如下圖
需求:以當(dāng)前月份(2023年2月)為起點(diǎn),往后倒推一年,查詢之前一年里每個(gè)月的統(tǒng)計(jì)數(shù)據(jù)。
可見圖中的數(shù)據(jù)其實(shí)是缺少的,這條sql只查詢到了有數(shù)據(jù)的月份(23年的1月、2月,22年的12月)
sql分類按月份匯總,sql,postgresql,數(shù)據(jù)庫
如果我想要沒有數(shù)據(jù)的那個(gè)月或者那一天、那一年也顯示統(tǒng)計(jì)記錄出來,即統(tǒng)計(jì)數(shù)據(jù)字段設(shè)為0.該怎么實(shí)現(xiàn)呢?
sql分類按月份匯總,sql,postgresql,數(shù)據(jù)庫文章來源地址http://www.zghlxwxcb.cn/news/detail-530624.html

解決思路

  1. 先單表查詢目標(biāo)表單,按時(shí)間周期分組,統(tǒng)計(jì)出每個(gè)月對應(yīng)的統(tǒng)計(jì)數(shù)據(jù)。設(shè)為表e,這時(shí)結(jié)果數(shù)據(jù)是有缺失的
  2. 再單表查詢出倒推一年內(nèi),每個(gè)月份的字段。設(shè)為表 w
  3. 最后將兩張表根據(jù) 月份字段進(jìn)行關(guān)聯(lián)查詢,其中關(guān)聯(lián)查詢的側(cè)重表應(yīng)是w
編寫sql
SELECT COALESCE(e.counts,0),w.wmonth
from (
			SELECT COUNT(*) counts,to_char(create_time, 'yyyy-MM') months
			FROM employee
			GROUP BY months
		) e 
		RIGHT JOIN
		(
			SELECT to_char(t, 'yyyy-MM') as wmonth
			from generate_series(now() - INTERVAL '1 year' ,now(), '1 MONTH') as t
		) w on e.months = w.wmonth
GROUP BY w.wmonth,e.counts
ORDER BY w.wmonth desc
函數(shù)解析
  • COALESCE(e.counts,0):在查詢表單的結(jié)果里,如果e.counts為null,則設(shè)置為0
  • to_char(create_time, ‘yyyy-MM’): 這個(gè)函數(shù)可以將時(shí)間對象轉(zhuǎn)化為字符串形式,有點(diǎn)像java內(nèi)的SimpleDateFormat.format()函數(shù)
  • now():獲取當(dāng)前的時(shí)間戳
  • generate_series(startTime,endTime ‘1 MONTH’):這個(gè)函數(shù)就是實(shí)現(xiàn)數(shù)據(jù)完整檢查的關(guān)鍵之一。作用是專門獲取一個(gè)時(shí)間區(qū)段內(nèi),每一天、每個(gè)月、每一年的時(shí)間’對象‘。該函數(shù)一共有三個(gè)參數(shù)
    (起始時(shí)間,末尾時(shí)間,時(shí)間跨度)
	-SELECT to_char(t, 'yyyy-MM') as wmonth
			from generate_series(now() - INTERVAL '1 year' ,now(), '1 MONTH') as t
  • sql分類按月份匯總,sql,postgresql,數(shù)據(jù)庫

到了這里,關(guān)于編寫sql統(tǒng)計(jì)一段時(shí)間內(nèi),每天、每月、每年的統(tǒng)計(jì)數(shù)據(jù)(PostgreSQL)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 2023-06-13:統(tǒng)計(jì)高并發(fā)網(wǎng)站每個(gè)網(wǎng)頁每天的 UV 數(shù)據(jù),結(jié)合Redis你會如何實(shí)現(xiàn)?

    2023-06-13:統(tǒng)計(jì)高并發(fā)網(wǎng)站每個(gè)網(wǎng)頁每天的 UV 數(shù)據(jù),結(jié)合Redis你會如何實(shí)現(xiàn)?

    2023-06-13:統(tǒng)計(jì)高并發(fā)網(wǎng)站每個(gè)網(wǎng)頁每天的 UV 數(shù)據(jù),結(jié)合Redis你會如何實(shí)現(xiàn)? 答案2023-06-13: 如果統(tǒng)計(jì) PV (頁面瀏覽量)那非常好辦,可以考慮為每個(gè)網(wǎng)頁創(chuàng)建一個(gè)獨(dú)立的 Redis 計(jì)數(shù)器,并將日期添加為鍵(key)的后綴。當(dāng)網(wǎng)頁收到請求時(shí),對應(yīng)的計(jì)數(shù)器將被遞增。對于每天的

    2024年02月08日
    瀏覽(36)
  • MySQL時(shí)間分組:按小時(shí)統(tǒng)計(jì)數(shù)據(jù)(mysql按小時(shí)分組)

    MySQL時(shí)間分組是一類涉及MySQL數(shù)據(jù)庫的SQL語句,能夠以小時(shí)對數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì)。 比如,如果你想根據(jù)一定的時(shí)間間隔,把MySQL數(shù)據(jù)庫中的記錄分成幾組,那么MySQL時(shí)間分組技術(shù)就派上用場了。 MySQL時(shí)間分組主要使用MySQL語句YEAR(), WEEK(), HOUR()和GROUP BY來實(shí)現(xiàn),按小時(shí)統(tǒng)計(jì)數(shù)據(jù)實(shí)

    2024年02月12日
    瀏覽(22)
  • mysql統(tǒng)計(jì)近7天數(shù)據(jù)量,,按時(shí)間戳分組

    mysql統(tǒng)計(jì)近7天數(shù)據(jù)量,,按時(shí)間戳分組

    可以使用以下 SQL 語句來統(tǒng)計(jì)近7天的數(shù)據(jù)量,并按時(shí)間戳分組。如果某一天沒有數(shù)據(jù),則將其填充為0。 解釋說明: DATE_FORMAT(FROM_UNIXTIME( timestamp ), \\\'%Y-%m-%d\\\') AS date 將時(shí)間戳轉(zhuǎn)換為日期格式,例如 2021-03-01。 COUNT(*) AS count 統(tǒng)計(jì)每天數(shù)據(jù)的數(shù)量。 WHERE timestamp = UNIX_TIMESTAMP(DATE_SUB

    2024年02月13日
    瀏覽(27)
  • 【實(shí)用】Mysql 按照時(shí)間(年月周日)維度統(tǒng)計(jì),不存在時(shí)間數(shù)據(jù) 自動補(bǔ)充 0 數(shù)值

    【實(shí)用】Mysql 按照時(shí)間(年月周日)維度統(tǒng)計(jì),不存在時(shí)間數(shù)據(jù) 自動補(bǔ)充 0 數(shù)值

    ps: 網(wǎng)上看了一大堆文章, 介紹的東西真的是很夠嗆, 就沒一個(gè)能真正用起來的, 各個(gè)都是自動補(bǔ),然后很多都是不好用的。 我自己整理一篇,這是真能用。 本篇內(nèi)容 : ① 按照 日 、周、月 、年 ?的維度 去對數(shù)據(jù) 做分組統(tǒng)計(jì)? ② 不存在的數(shù)據(jù)自動補(bǔ)充 0 ?(實(shí)用) 不

    2024年02月03日
    瀏覽(23)
  • 解決Oracle SQL語句性能問題——收集和維護(hù)統(tǒng)計(jì)數(shù)據(jù)

    所謂統(tǒng)計(jì)數(shù)據(jù),前述文中也提到過,它們是數(shù)據(jù)庫優(yōu)化器賴以產(chǎn)生SQL語句最優(yōu)執(zhí)行計(jì)劃的依據(jù)。以這些統(tǒng)計(jì)數(shù)據(jù)為基礎(chǔ),優(yōu)化器通過內(nèi)置的模型、算法等,計(jì)算出全部或候選執(zhí)行計(jì)劃的成本(Cost),通過比較每個(gè)執(zhí)行計(jì)劃的成本,選出成本最低的執(zhí)行計(jì)劃,也就得到了SQL語句

    2024年02月10日
    瀏覽(21)
  • 數(shù)據(jù)處理與統(tǒng)計(jì)分析——MySQL與SQL

    數(shù)據(jù)處理與統(tǒng)計(jì)分析——MySQL與SQL

    數(shù)據(jù)庫:DB(DataBase) 概念 :數(shù)據(jù)倉庫,軟件,安裝在操作系統(tǒng)之上 作用 :存儲數(shù)據(jù),管理數(shù)據(jù) 關(guān)系型數(shù)據(jù)庫:SQL(Structured Query Language) MySQL、Oracle、Sql Server、DB2、SQLlite 通過表和表之間,行和列之間的關(guān)系進(jìn)行數(shù)據(jù)的存儲 通過外鍵關(guān)聯(lián)來建立表與表之間的關(guān)系 非關(guān)系型

    2024年02月12日
    瀏覽(20)
  • 使用JOIN查詢數(shù)據(jù)重復(fù),怎么辦?使用count統(tǒng)計(jì)怎么寫SQL?

    比如現(xiàn)在有兩個(gè)表tbl_a和tbl_b,如下: tbl_a id name 1 Bruce 2 Mike 3 Angela tbl_b id a_id :-: :-: 1 1 2 1 3 2 4 3 5 3 6 3 這時(shí)候我們?nèi)绻?lián)查的話,就會出現(xiàn)重復(fù)數(shù)據(jù): 這樣查出來的數(shù)據(jù)就會像下面這樣: id name 1 Bruce 1 Bruce 2 Mike 3 Angela 3 Angela 3 Angela 去重的方法有三種: 一、distinct 二、group

    2024年02月16日
    瀏覽(23)
  • 如何通過ELK統(tǒng)計(jì)一段時(shí)間內(nèi)接口被調(diào)用次數(shù)及平均響應(yīng)時(shí)間

    如何通過ELK統(tǒng)計(jì)一段時(shí)間內(nèi)接口被調(diào)用次數(shù)及平均響應(yīng)時(shí)間

    ELK,全名是: Elasticsearch,有了它,我們可以很方便地進(jìn)行日志查詢。 那么,假如想要統(tǒng)計(jì)某個(gè)服務(wù)的接口在某段時(shí)間內(nèi)的被調(diào)用次數(shù)平均響應(yīng)時(shí)間,類似于下面的效果: 那應(yīng)該怎么做呢? 步驟如下, 1、打開ELK地址,找到Dev Tools 2、點(diǎn)擊Dev Tools,輸入執(zhí)行內(nèi)容 說明: 注意

    2024年02月12日
    瀏覽(92)
  • mysql數(shù)據(jù)庫使用sql對特殊分隔符分隔的字段進(jìn)行統(tǒng)計(jì)

    mysql數(shù)據(jù)庫使用sql對特殊分隔符分隔的字段進(jìn)行統(tǒng)計(jì)

    需求 在一個(gè)數(shù)據(jù)庫表中有一個(gè)字段中的數(shù)據(jù)是通過特殊符號進(jìn)行分隔的,現(xiàn)需要統(tǒng)計(jì)分隔符分開的各數(shù)據(jù)的條數(shù)。 數(shù)據(jù)準(zhǔn)備 ?現(xiàn)需統(tǒng)計(jì)各個(gè)絕技的人數(shù)? 思路 使用sql根據(jù)逗號將一行數(shù)據(jù)拆分成多行數(shù)據(jù) ,然后使用group by對拆分的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。 三種方式,相同的原理 使用

    2023年04月17日
    瀏覽(44)
  • DB SQL 轉(zhuǎn) ES DSL(支持多種數(shù)據(jù)庫常用查詢、統(tǒng)計(jì)、平均值、最大值、最小值、求和語法)...

    DB SQL 轉(zhuǎn) ES DSL(支持多種數(shù)據(jù)庫常用查詢、統(tǒng)計(jì)、平均值、最大值、最小值、求和語法)...

    1. 簡介 ??日常開發(fā)中需要查詢 Elasticsearch 中的數(shù)據(jù)時(shí),一般會采用 RestHighLevelClient 高級客戶端封裝的API。項(xiàng)目中一般采用一種或多種關(guān)系型數(shù)據(jù)庫(如: Mysql 、 PostgreSQL 、 Oracle 等) + NoSQL(如: Elasticsearch )存儲方案;不同關(guān)系數(shù)據(jù)庫可以采用 Mybatis-Plus 方案屏蔽數(shù)據(jù)庫的方言

    2024年01月17日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包