<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.hse6.com:临沂市| www.aquaherbals.com:天等县| www.ascendingwings.com:九龙坡区| www.dawidswierczek.com:屯留县| www.dominatanja.com:固阳县| www.sunmastering.com:信阳市| www.cp2290.com:伊宁县| www.altahrirtv.com:平远县| www.bdshe88.com:玉龙| www.letsbecomefit.com:岑溪市| www.cccasas.com:神木县| www.phone-winn4.com:通化市| www.gw336.com:长垣县| www.fukui-keieiken.com:浑源县| www.how2scuba.com:宁海县| www.vertaxtechnology.com:扶绥县| www.cheap-uggboots4u.com:松桃| www.troop199fishers.com:肇州县| www.thomasinjune.com:确山县| www.youlanqiu.com:民勤县| www.estadonacionalespanol.com:芜湖县| www.ly201.com:高密市| www.1314xing.com:民权县| www.healthinsurancenewyork.net:大方县| www.cxpfx.cn:余姚市| www.possn.com:连南| www.crimson-room.net:临沂市| www.tengbo688.com:图木舒克市| www.clayris.com:湘乡市| www.celiacosviajeros.com:中阳县| www.listensoulution.com:黑水县| www.jlxkc.com:门头沟区| www.thisissohot.com:邹城市| www.spielothekspiele.com:房山区| www.djmix8.com:大连市| www.unichina-tech.com:全州县| www.mfrzz.com:项城市| www.faisltd.com:黔西县| www.teamizzat.com:凤冈县| www.110df.com:自贡市| www.newoxfordbotanical.com:密云县| www.misterkiru.com:和林格尔县| www.sterlingsilvergifts.com:岱山县| www.plastic-films.com:吴江市| www.shuidajie.com:彰化市| www.hg16456.com:遵义县| www.chaningtech.com:万源市| www.madlypopn.com:麻城市| www.jln9.com:SHOW| www.paltinumxtal.com:望城县| www.cp3359.com:高雄县| www.798666z.com:罗源县| www.rdealerv.com:邻水| www.threecrownsracing.com:白山市| www.gordon-hippo.com:青川县| www.dawdev.com:洱源县| www.ynlcdcj.com:三原县| www.czzhanhai.com:寿光市| www.fisting-tube.com:瑞丽市| www.ecobioprogetti.com:托克逊县| www.kinostream.net:精河县| www.vsdtv.com:射洪县| www.kdjbw.cn:栾川县| www.zbtaocidao.com:田东县| www.lomachihuahuas.com:蓝山县| www.bjxdby.com:鸡泽县| www.tjssanreqi.com:雅安市| www.guokejx.com:邵阳县| www.bagusprint.com:洪洞县| www.ticfilm.com:独山县| www.yr597.com:古丈县| www.leopad.net:沁水县| www.joabiz.com:胶南市| www.z5828.com:甘洛县| www.hirdavatciyiz.com:济源市| www.huthug.com:恩平市| www.kylegreerrocks.com:澜沧| www.beautyinimperfections.com:明溪县| www.wwzz888.com:海南省| www.turismogay.net:绥阳县| www.dachadian.com:和平县| www.summonerscentral.com:巴里| www.shhupai.com:陆丰市| www.nishiyama-shotengai.net:察隅县|