15분 간격 sql 질문입니다. 1 4 740

by 도리비 [SQL Query] [2021.12.15 10:17:32]


timestamp name value
2021-12-15 00:00 A 20
2021-12-15 00:05 A 22
2021-12-15 00:10 A 25
2021-12-15 00:15 A 21
2021-12-15 00:20 A 23
2021-12-15 00:25 A 45
2021-12-15 00:30.... A 44

 

이런식으로 데이터가 들어오는 테이블이 있습니다.

15분 간격으로 value를 sum 하고자 아래와 같이 쿼리를 했습니다.

 

SELECT `timestamp`,NAME AS n, SUM(`value`) AS v
FROM sample 
WHERE n= 'A' AND `timestamp` >= '2021-12-15 00:15' AND `timestamp` <= CURDATE() + INTERVAL 1 day
GROUP BY n,FLOOR(UNIX_TIMESTAMP(timestamp)/(15 * 60))

15분 간격으로 계산은 잘 하지만, 15분이 포함된 값은 그냥 넘어가는 문제가 있습니다.

예로 00~15분 당시 값을 더해서(총4개값,00,05,10,15) 15분 값으로 표시하고 싶습니다.

15분~30분(총4개값,15,20,25,30)은 30분 값으로 하고 싶은데

어떻게 하면 될까요?

by 마농 [2021.12.15 10:31:07]

3개씩 합쳐야죠? 4개씩 합치면? 중복해서 합산됩니다.
(00, 05, 10, 15) 00 중복
(15, 20, 25, 30) 15 중복
(30, 35, 40, 45) 30 중복
(45, 50, 55, 00) 45 중복

어떻게 묶을 것인지도 정해야 합니다.
(00, 05, 10) 로 구룹핑 할지? '00' <= ts < '15'
(05, 10, 15) 로 구룹핑 할지? '00' < ts <= '15'


by 도리비 [2021.12.15 10:53:30]

마농님 안녕하세요 늘 도움 받습니다. 감사합니다.

처음엔 중복합산인줄 알았는데 마농님 말씀처럼 중복하면 안되는것으로 확인했습니다.

05,10,15 -> 15

20,25,30 ->30

35,40,45 -> 45

50,55,00 -> 00

 

 


by 마농 [2021.12.15 13:37:22]

해당 그룹으로 묶으려면 FLOOR 대신 CEIL 하시면 됩니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입