SELECT p.id AS pod_id, p.title AS pod_title, t.id AS topic_id, t.message AS topic_content, c.total_work_hour FROM topic AS t JOIN ( SELECT topic_id, SUM(work_hour) AS total_work_hour FROM comment WHERE commentator = '이메일' AND work_hour > 0 AND complete = 1 AND is_delete = 0 AND update_date BETWEEN '20240101' AND '20241201' GROUP BY topic_id ) AS c ON t.id = c.topic_id JOIN message_board AS p ON p.id = t.message_board_id WHERE t.complete = 1 AND t.delete_status = 2 AND p.status = 2 UNION ALL SELECT p.id AS pod_id, p.title AS pod_title, NULL AS topic_id, NULL AS topic_content, SUM(c.total_work_hour) AS total_work_hour FROM topic AS t JOIN ( SELECT topic_id, SUM(work_hour) AS total_work_hour FROM comment WHERE commentator = '이메일' AND work_hour > 0 AND complete = 1 AND is_delete = 0 AND update_date BETWEEN '20240101' AND '20241201' GROUP BY topic_id ) AS c ON t.id = c.topic_id JOIN message_board AS p ON p.id = t.message_board_id WHERE t.complete = 1 AND t.delete_status = 2 AND p.status = 2 GROUP BY p.id, p.title ORDER BY pod_title, total_work_hour desc, topic_id;
의 결과는
pod_id pod_title topic_id topic_content total_work_hour
2042 | MH 테스트 | 4 | ||
2042 | MH 테스트 | 312043 | 테스트 | 4 |
2045 | 프로젝트 파드 생성 테스트 | 30 | ||
2045 | 프로젝트 파드 생성 테스트 | 311953 | linked | 10 |
2045 | 프로젝트 파드 생성 테스트 | 311969 | test | 9 |
2045 | 프로젝트 파드 생성 테스트 | 311949 | ee | 4 |
2045 | 프로젝트 파드 생성 테스트 | 311966 | dahee.lee 전체공개 토픽을 장성함 태그는 dahee.lee2 지정 | 3 |
2045 | 프로젝트 파드 생성 테스트 | 311982 | 안녕하세요 | 2 |
2045 | 프로젝트 파드 생성 테스트 | 311995 | M-H 테스트를 하겠습니다. | 2 |
가 나옵니다. 제가 원하는 결과는 아래와 같이 total_work_hour 가 내림차순으로 정렬되길 원합니다..
pod_id pod_title topic_id topic_content total_work_hour
2045 | 프로젝트 파드 생성 테스트 | 30 | ||
2045 | 프로젝트 파드 생성 테스트 | 311953 | linked | 10 |
2045 | 프로젝트 파드 생성 테스트 | 311969 | test | 9 |
2045 | 프로젝트 파드 생성 테스트 | 311949 | ee | 4 |
2045 | 프로젝트 파드 생성 테스트 | 311966 | dahee.lee 전체공개 토픽을 장성함 태그는 dahee.lee2 지정 | 3 |
2045 | 프로젝트 파드 생성 테스트 | 311982 | 안녕하세요 | 2 |
2045 | 프로젝트 파드 생성 테스트 | 311995 | M-H 테스트를 하겠습니다. | 2 |
..
2042 | MH 테스트 | 4 | ||
2042 | MH 테스트 | 312043 | 테스트 | 4 |
WITH message_board AS ( SELECT 2042 id, 'MH 테스트' title, 2 status UNION ALL SELECT 2045, '프로젝트 파드 생성 테스트', 2 ) , topic AS ( SELECT 2042 message_board_id, 312043 id, '테스트' message, 1 complete, 2 delete_status UNION ALL SELECT 2045, 311953, 'linked', 1, 2 UNION ALL SELECT 2045, 311969, 'test', 1, 2 UNION ALL SELECT 2045, 311949, 'ee', 1, 2 UNION ALL SELECT 2045, 311966, 'dahee.lee 전체공개 토픽을 장성함 태그는 dahee.lee2 지정', 1, 2 UNION ALL SELECT 2045, 311982, '안녕하세요', 1, 2 UNION ALL SELECT 2045, 311995, 'M-H 테스트를 하겠습니다.', 1, 2 ) , comment AS ( SELECT 312043 topic_id, 4 work_hour, '20240101' update_date, '이메일' commentator, 1 complete, 0 is_delete UNION ALL SELECT 311953, 10, '20240101', '이메일', 1, 0 UNION ALL SELECT 311969, 9, '20240101', '이메일', 1, 0 UNION ALL SELECT 311949, 4, '20240101', '이메일', 1, 0 UNION ALL SELECT 311966, 3, '20240101', '이메일', 1, 0 UNION ALL SELECT 311982, 2, '20240101', '이메일', 1, 0 UNION ALL SELECT 311995, 2, '20240101', '이메일', 1, 0 ) SELECT pod_id , pod_title , topic_id , CASE WHEN topic_id IS NOT NULL THEN topic_content END topic_content , total_work_hour FROM (SELECT p.id AS pod_id , p.title AS pod_title , t.id AS topic_id , t.message AS topic_content , SUM(c.work_hour) AS total_work_hour FROM topic t JOIN comment c ON t.id = c.topic_id JOIN message_board p ON p.id = t.message_board_id WHERE t.complete = 1 AND t.delete_status = 2 AND p.status = 2 AND c.commentator = '이메일' AND c.work_hour > 0 AND c.complete = 1 AND c.is_delete = 0 AND c.update_date BETWEEN '20240101' AND '20241201' GROUP BY p.id, t.id WITH ROLLUP HAVING p.id IS NOT NULL ) a ORDER BY SUM(total_work_hour) OVER(PARTITION BY pod_id) DESC , pod_id , total_work_hour DESC , topic_id ;