SELECT
T.idx, T.path, T.hash_idx
, (SELECT MAX(modify_time) FROM proc WHERE hash_idx = T.hash_idx) as hash_lmt
, (SELECT MAX(modify_time) FROM proc WHERE hash_idx = T.hash_idx AND `path` = T.path) AS modify_time
FROM (
SELECT * FROM proc
) AS T
GROUP BY T.hash_idx, T.path
ORDER BY hash_lmt DESC, modify_time DESC;
경로와 해쉬 기준으로 group by 할 경우 단순 조회시 시간 정보가 누락되어 조회가 되었습니다.
그래서 서브쿼리를 이용해서 해당 경로의 최신 시간 정보를 가져오도록 서브 쿼리를 작성하였습니다.
SELECT
T.idx, T.group_code, T.path, T.hash_idx
, (SELECT MAX(modify_time) FROM proc WHERE hash_idx = T.hash_idx) as hash_lmt
, (SELECT MAX(modify_time) FROM proc WHERE hash_idx = T.hash_idx AND `path` = T.path AND `group_code` = T.group_code) AS modify_time
FROM (
SELECT * FROM proc
) AS T
GROUP BY T.hash_idx, T.path, T.group_code
ORDER BY hash_lmt DESC, T.group_code desc, modify_time DESC;
해시, 경로, 그룹 기준으로 group by 할 경우도 동일하게 조건을 하나 더 추가해서 누락된 시간정보를 조회하도록 하였습니다.
'[개발관련] > Database(Mysql)' 카테고리의 다른 글
Spring Data JPA 한글 등록 문제 (0) | 2021.03.29 |
---|---|
[Mysql]update쿼리 수행 시 Truncated incorrect DOUBLE value: '-Infinity' (0) | 2019.06.04 |
GROUP BY 사용시 only_full_group_by 관련 에러 발생시 (0) | 2019.05.29 |
[ Mysql] DB Time Zone 변경 (0) | 2019.04.08 |
쿼리 연습 ex )세로축은 product_name별, 가로축은 주문년도를 "2015년", "2016년"으로 구성하여 product_name별, 년도별 주문건수를 집계하세요. (주문건수가 없으면 0으로 표시) (0) | 2019.04.07 |