반응형
mysql group by hour - 잘못된 결과를 피하는 방법
이 표에는 레인 카운터 값이 저장되어 있습니다.정확한 합계는 0.9 RAW 데이터에서 17:01에 값이 1161.5로 설정된 것을 확인할 수 있습니다.
SQL 쿼리를 통해 RAW 데이터는 시간당 그룹화됩니다.결과적으로 16-17시 사이에는 0.6개의 비만 보입니다.안타깝게도 카운터 1161.5와 1161.2 사이의 0.3mm가 누락되었습니다.
어떻게 하면 제 SQL 쿼리의 오류를 피할 수 있는지 아십니까?
- 레인 카운터의 RAW 데이터:
이드 | 언익스택 | 날짜. | 우천의 |
---|---|---|---|
15261 | 1666270927 | 2022-10-20 15:02:07 | 1160.6 |
15262 | 1666271527 | 2022-10-20 15:12:07 | 1160.6 |
15263 | 1666272127 | 2022-10-20 15:22:07 | 1160.6 |
15264 | 1666272727 | 2022-10-20 15:32:07 | 1160.6 |
15265 | 1666273327 | 2022-10-20 15:42:07 | 1160.6 |
15266 | 1666273927 | 2022-10-20 15:52:07 | 1160.6 |
15267 | 1666274527 | 2022-10-20 16:02:07 | 1160.6 |
15268 | 1666275127 | 2022-10-20 16:12:07 | 1160.6 |
15269 | 1666275727 | 2022-10-20 16:22:07 | 1160.6 |
15270 | 1666276171 | 2022-10-20 16:29:31 | 1160.9 |
15271 | 1666276228 | 2022-10-20 16:30:28 | 1160.9 |
15272 | 1666276327 | 2022-10-20 16:32:07 | 1160.9 |
15273 | 1666276927 | 2022-10-20 16:42:07 | 1160.9 |
15274 | 1666277348 | 2022-10-20 16:49:08 | 1161.2 |
15275 | 1666277527 | 2022-10-20 16:52:07 | 1161.2 |
15276 | 1666278118 | 2022-10-20 17:01:58 | 1161.5 |
15277 | 1666278127 | 2022-10-20 17:02:07 | 1161.5 |
15278 | 1666278727 | 2022-10-20 17:12:07 | 1161.5 |
15279 | 1666279327 | 2022-10-20 17:22:07 | 1161.5 |
15280 | 1666279927 | 2022-10-20 17:32:07 | 1161.5 |
- MYSQL 쿼리:
SELECT `date`,ROUND(MAX(`rainc`) - MIN(`rainc`),2) AS `rain`, MAX(`rainc`) AS max
FROM`mqtt-weather`.`rainc`
WHERE `date` >= CURDATE() AND `date` < CURDATE() + INTERVAL 1 DAY
GROUP BY HOUR(`date`)
- 결과:
날짜. | 비. | 맥스. |
---|---|---|
2022-10-20 15:02:07 | 0.00 | 1160.6 |
2022-10-20 16:02:07 | 0.60 | 1161.2 |
2022-10-20 17:01:58 | 0.00 | 1161.5 |
2022-10-20 18:02:07 | 0.00 | 1161.5 |
WITH
lagged AS
(
SELECT
r.*,
LAG(`date`) OVER (ORDER BY unixt) AS prev_date,
rainc - LAG(rainc) OVER (ORDER BY unixt) AS rainc_delta
FROM
`mqtt-weather`.`rainc` AS r
)
SELECT
MIN(prev_date) AS interval_start,
MAX(`date`) AS interval_end,
SUM(rainc_delta) AS interval_rain,
MAX(rainc) AS final_rainc
FROM
lagged
GROUP BY
unixt DIV 3600
EDIT: 데모를 추가하고 오타 및 정수 나눗셈을 수정했습니다.
데모: https://dbfiddle.uk/fW1ykZxi
언급URL : https://stackoverflow.com/questions/74144232/mysql-group-by-hour-how-to-avoid-wrong-results
반응형
'programing' 카테고리의 다른 글
각도 2에서 관측 가능한 데이터를 가져오는 방법 (0) | 2023.08.09 |
---|---|
PL/SQL의 null 연관 배열에 대한 이 검사가 실패하는 이유는 무엇입니까? (0) | 2023.08.09 |
ASP.Net에서 CSV 파일 생성 (0) | 2023.08.09 |
봄에 프로필별 @예약된 작업을 활성화하는 방법은 무엇입니까? (0) | 2023.08.09 |
Windows에 Python 패키지를 설치하려면 어떻게 해야 합니까? (0) | 2023.08.09 |