postgresql 그룹 통계 데이터 구현 코드
3546 단어 postgreSql패 킷데이터
예 를 들 어 기상대 의 기온 감 측 은 30 분 마다 데 이 터 를 보고 하고 여러 곳 의 기온 감 측 이 있다.그러면 데이터 표 에는 여러 곳 의 서로 다른 시간의 기온 데이터 가 있 을 것 이다.
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 의 함 수 를 이용 하 였 습 니 다:ROWNUMBER() 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 구문
케이스 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!
여기 서 post greSql 그룹 통계 데이터 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 post greSql 그룹 데이터 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
postgresql 그룹 통계 데이터 구현 코드예 를 들 어 기상대 의 기온 감 측 은 30 분 마다 데 이 터 를 보고 하고 여러 곳 의 기온 감 측 이 있다.그러면 데이터 표 에는 여러 곳 의 서로 다른 시간의 기온 데이터 가 있 을 것 이다. 매번 조회 할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.