<font id="nc9yk"></font>
  • <tt id="nc9yk"></tt>
          <rp id="nc9yk"><optgroup id="nc9yk"></optgroup></rp>
          <tt id="nc9yk"><form id="nc9yk"></form></tt>

            <cite id="nc9yk"></cite>

            postgreSql分組統計數據的實現代碼

             更新時間:2020年12月29日 15:54:44   作者:Scoful  
            這篇文章給大家介紹postgreSql的監控記錄表里多條不同時間的數據,只取最新的數據,并分組統計,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

            1. 背景

            比如氣象臺的氣溫監控,每半小時上報一條數據,有很多個地方的氣溫監控,這樣數據表里就會有很多地方的不同時間的氣溫數據

            2. 需求:

            每次查詢只查最新的氣溫數據按照不同的溫度區間來分組查出,比如:高溫有多少地方,正常有多少地方,低溫有多少地方

            3. 構建數據

            3.1 創建表結構:

            -- DROP TABLE public.t_temperature
            
            CREATE TABLE public.t_temperature (
            	id int4 NOT NULL GENERATED ALWAYS AS IDENTITY,
            	place_name varchar NOT NULL,
            	value float8 NOT NULL,
            	up_time timestamp NOT NULL,
            	CONSTRAINT t_temperature_pk PRIMARY KEY (id)
            );
            
            -- Permissions
            
            ALTER TABLE public.t_temperature OWNER TO postgres;
            GRANT ALL ON TABLE public.t_temperature TO postgres;

            3.2 造數據

            INSERT INTO public.t_temperature (place_name,value,up_time) VALUES 
            ('廣州',35,'2020-07-12 15:00:00.000')
            ,('廣州',35.9,'2020-07-12 15:30:00.000')
            ,('深圳',30,'2020-07-12 15:30:00.000')
            ,('深圳',31,'2020-07-12 16:30:00.000')
            ,('三亞',23,'2020-07-12 16:30:00.000')
            ,('三亞',21,'2020-07-12 17:30:00.000')
            ,('北極',-1,'2020-07-12 17:30:00.000')
            ,('北極',-10,'2020-07-12 19:30:00.000')
            ;

            4. 需求實現

            4.1 需求1的SQL語句

            利用了postgreSql的一個函數:ROW_NUMBER() OVER( [ PRITITION BY col1] ORDER BY col2[ DESC ] )

            select
            	*
            from
            	(
            	select
            		tt.place_name,
            		tt.value,
            		tt.up_time,
            		row_number() over ( partition by tt.place_name
            	order by
            		tt.up_time desc) as row_num
            	from
            		t_temperature tt) aaa
            where
            	aaa.row_num = 1

            效果如下,查出的都是最新的數據:

            在這里插入圖片描述

            4.2 需求2的SQL語句

            利用了一個case when then else end 用法來統計數量

            select
            	dd.place_name,
            	sum(case when dd.value <= 0 then 1 else 0 end) as 低溫天氣,
            	sum(case when dd.value > 0 and dd.value < 25 then 1 else 0 end) as 正常天氣,
            	sum(case when dd.value >= 25 then 1 else 0 end) as 高溫天氣
            from
            	t_temperature dd
            group by
            	dd.place_name

            效果如下,因為沒有過濾每個地方的最新數據,查出的是所有數據:

            在這里插入圖片描述

            用需求1的結果來查詢統計:

            select
            	dd.place_name,
            	sum(case when dd.value <= 0 then 1 else 0 end) as 低溫天氣,
            	sum(case when dd.value > 0 and dd.value < 25 then 1 else 0 end) as 正常天氣,
            	sum(case when dd.value >= 25 then 1 else 0 end) as 高溫天氣
            from
            	(
            	select
            		*
            	from
            		(
            		select
            			tt.place_name,
            			tt.value,
            			tt.up_time,
            			row_number() over ( partition by tt.place_name
            		order by
            			tt.up_time desc) as row_num
            		from
            			t_temperature tt) aaa
            	where
            		aaa.row_num = 1) dd
            group by
            	dd.place_name

            效果如下:

            在這里插入圖片描述

            假如再嵌套一個sum統計,就能查出低溫天氣,正常天氣,高溫天氣分別合計數量是多少了。

            over,enjoy!

            到此這篇關于postgreSql分組統計數據的文章就介紹到這了,更多相關postgreSql分組數據內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

            相關文章

            • PostgreSQL教程(十六):系統視圖詳解

              PostgreSQL教程(十六):系統視圖詳解

              這篇文章主要介紹了PostgreSQL教程(十六):系統視圖詳解,本文講解了pg_tables、pg_indexes、pg_views、pg_user、pg_roles、pg_rules、pg_settings等視圖的作用和字段含義等內容,需要的朋友可以參考下
              2015-05-05
            • postgresql 計算時間差的秒數、天數實例

              postgresql 計算時間差的秒數、天數實例

              這篇文章主要介紹了postgresql 計算時間差的秒數、天數實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
              2020-12-12
            • PostgreSQL教程(四):數據類型詳解

              PostgreSQL教程(四):數據類型詳解

              這篇文章主要介紹了PostgreSQL教程(四):數據類型詳解,本文講解了數值類型、字符類型、布爾類型、位串類型、數組、復合類型等數據類型,需要的朋友可以參考下
              2015-05-05
            • PostgreSQL之pgdump備份恢復操作

              PostgreSQL之pgdump備份恢復操作

              這篇文章主要介紹了PostgreSQL之pgdump備份恢復操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
              2020-12-12
            • PGSQL 實現把字符串轉換成double類型(to_number())

              PGSQL 實現把字符串轉換成double類型(to_number())

              這篇文章主要介紹了PGSQL 實現把字符串轉換成double類型(to_number()),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
              2020-12-12
            • Windows下Postgresql數據庫的下載與配置方法

              Windows下Postgresql數據庫的下載與配置方法

              這篇文章主要介紹了Windows下Postgresql數據庫的下載與配置方法 ,需要的朋友可以參考下
              2014-06-06
            • postgresql查詢鎖表以及解除鎖表操作

              postgresql查詢鎖表以及解除鎖表操作

              這篇文章主要介紹了postgresql查詢鎖表以及解除鎖表操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
              2020-12-12
            • Windows下Postgresql下載與配置方法

              Windows下Postgresql下載與配置方法

              這篇文章主要為大家詳細介紹了Windows下Postgresql下載與配置方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
              2017-05-05
            • 初識PostgreSQL存儲過程

              初識PostgreSQL存儲過程

              這篇文章主要介紹了初識PostgreSQL存儲過程,本文講解了PostgreSQL中存儲過程的語法,并給出了一個操作實例,需要的朋友可以參考下
              2015-01-01
            • pgsql批量修改sequences的start方式

              pgsql批量修改sequences的start方式

              這篇文章主要介紹了pgsql批量修改sequences的start方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
              2020-12-12

            最新評論

            hao500彩票 www.jrjhl.com.cn:忻州市| www.pj12379.com:涞水县| www.hmartusa.net:大港区| www.african-solar.com:永登县| www.yarnundyedusa.com:根河市| www.bleedingblack.com:天镇县| www.caitaocongtrinh.com:全南县| www.redmarked.com:莆田市| www.galynka.com:新密市| www.lumicphoto.com:江北区| www.jpgdu.com:靖州| www.61e7.com:财经| www.cmwr-xvi.org:宁德市| www.kpzhw.cn:剑阁县| www.xijiufuheban.com:顺平县| www.christoph-behrmann.com:郑州市| www.greenvocational.com:雷州市| www.truboot.com:永寿县| www.km-alliance.com:杂多县| www.galbia.com:镇江市| www.mpafoto.com:龙江县| www.zzliyu.com:海兴县| www.tkozelibitimilijunas.com:泗阳县| www.q7838.com:峨山| www.xashanjia.com:越西县| www.bestkitchenkniveslist.com:绥江县| www.nmgshanhua.com:华阴市| www.apeeye.com:壶关县| www.cheapcialisnow.net:石渠县| www.qatarsworldcup.com:太湖县| www.jk852.com:潮州市| www.raycorodriguez.com:鹤岗市| www.kashoubangzongdai.com:汉阴县| www.leicestercityjersey.com:东兰县| www.bwbuffaloridgeinn.com:乐东| www.futurecitieschina.com:惠安县| www.alao333.com:沂南县| www.lixiaoqiu.com:绿春县| www.maksoyun.com:陇南市| www.geoeconomic.com:阜城县| www.gotbadgeapp.com:阿尔山市| www.almsamim.com:化德县| www.hg50456.com:满城县| www.217661.com:高尔夫| www.valsogtc.com:科尔| www.rightics.com:乐至县| www.springmaidgarden.com:巴塘县| www.akillipet.com:浮山县| www.makpad.com:兴宁市| www.awakenhaven.com:南宫市| www.commandotech.com:黄平县| www.acllo.com:承德县| www.truemonism.com:当涂县| www.saltatoria.com:弥渡县| www.jddedman.com:吉木乃县| www.jsduke.com:巢湖市| www.huidenhd.com:巩留县| www.maitmall.com:丰台区| www.solgintl.com:田阳县| www.cx13800.com:高尔夫| www.suncity233.com:阿荣旗| www.gzswsk.com:安达市| www.n6858.com:抚顺县| www.lucastenor.com:香河县| www.blimprobotics.com:万荣县| www.ocaima.com:洱源县| www.88dgj.com:荆州市| www.peng9.com:永修县| www.uniquemicrofinance.com:安吉县| www.takethiscash.com:丁青县| www.bahqb.cn:二连浩特市| www.aquaherbals.com:包头市| www.discover-trinity.org:库尔勒市| www.alphaaidtraining.com:宁明县| www.ccjxbm.com:岢岚县| www.cacros.com:浮梁县| www.akillipet.com:理塘县| www.aobento.com:平泉县| www.georgepappasltd.com:平远县| www.dreclements.com:万山特区| www.anilius.com:大化| www.zajstone.com:腾冲县| www.antonkropotkinsky.com:台中市| www.maranathawichita.com:府谷县|