날짜별로 시간별 데이터를 받아옵니다.
SELECT count(idx) as cnt, DATE_FORMAT(FROM_UNIXTIME(cudate), '%Y-%m-%d %H') regday FROM test where cugdate >= unix_time('2022-07-30') AND cugdate <= unix_time('2022-08-01') GROUP BY regday
+-----+---------------+
| cnt | regday |
+-----+---------------+
| 114 | 2022-07-30 00 |
| 113 | 2022-07-30 01 |
| 45 | 2022-07-30 02 |
| 51 | 2022-07-30 03 |
| 32 | 2022-07-30 04 |
| 140 | 2022-07-31 00 |
| 101 | 2022-07-31 01 |
| 76 | 2022-07-31 02 |
| 31 | 2022-07-31 03 |
| 31 | 2022-07-31 04 |
이런식으로 값이 들어온다고 할때 같은 시간끼리 더해서 값을 합쳐주고 싶습니다
원하는 값 2022-07-30 의 00 시와 2022-07-31의 00시 2022-08-01 의 00시 ... 등등 같은시간값들을
합쳐주고 싶은데 방법이 있을까요? 마찬가지로 01시 끼리 02시끼리~~ 23시끼리 까지 다 합쳐주고싶습니다
ex) 위의값대로한다면 2022-07-30 00->114 2022-07-31 00->140 을 합쳐서 254가 나오게하고싶습니다
코딩으로 처리해야하는 부분인지 쿼리로 가능한지 가능하다면 방법을 알려주시면 감사하겠습니다.
1. 집계 기준을 바꾸면 됩니다.
- 현재 : 년월일시 ('%Y-%m-%d %H')
- 수정 : 시 ('%H')
2. 함수가 unix_time 맞나요?
- unix_timestamp 아닌가요?
= 오타인지? 아니면 사용자함수를 따로 만든 것인지?
3. 조회 기준이 모호합니다.
- 2022-08-01 을 포함시키려면 다음과 같이 조건을 줘야 합니다.
- 수정전 : AND cugdate <= unix_timestamp('2022-08-01')
- 수정후 : AND cugdate < unix_timestamp('2022-08-02')
4. 표준 쿼리 사용 권장
- Select 절의 별칭 regday 를 동일레벨의 GROUP BY 절에서 사용하는 것은 원칙적으로 안됩니다.
- MySQL 에서만 허용되는 비표준 구문입니다.
- 별칭 주기 전의 원래의 표현식 그대로를 GROUP BY 에 사용하거나
- 별칭 쿼리를 인라인뷰로 감싸서 밖에서 GROUP BY 하거나