혹시 이런 것도 정렬 되나요? 0 8 1,873

by 큐니백작 [SQL Query] 정렬 그룹 오라클 쿼리 [2023.03.17 12:12:28]


WITH t AS (
SELECT 'A' PLACE, '흑점' ERROR_NAME, 	189 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'B' PLACE, '흑점' ERROR_NAME, 	  0 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'A' PLACE, '합판(박리)불량' ERROR_NAME, 	593 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'B' PLACE, '합판(박리)불량' ERROR_NAME, 2 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'C' PLACE, '합판(박리)불량' ERROR_NAME, 	15 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'D' PLACE, '합판(박리)불량' ERROR_NAME, 10 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'A' PLACE, '터짐/취급' ERROR_NAME,	2753 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'B' PLACE, '터짐/취급' ERROR_NAME,	0 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'C' PLACE, '터짐/취급' ERROR_NAME,	0 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'D' PLACE, '터짐/취급' ERROR_NAME,	0 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'E' PLACE, '터짐/취급' ERROR_NAME,	0 ERROR_COUNT FROM DUAL )

위 자료가 아래처럼 정렬되도록 쿼리 작성 부탁드립니다.

설명이 부족했나봅니다

ERROR_COUNT가 큰 값의 ERROR_NAME 전체가 정렬되는 내용입니다. PLACE는 참조만 하시면되고 정렬과는 무관합니다.

A    터짐/취급    2753
B    터짐/취급    0
C    터짐/취급    0
D    터짐/취급    0
E    터짐/취급    0
A    합판(박리)불량    593
C    합판(박리)불량    15
D    합판(박리)불량    10
B    합판(박리)불량    2
A    흑점    189
B    흑점    0
 

이리저리 머리를 굴려도 모르겠네요 휴~~~~

 

by 동동동 [2023.03.17 12:51:59]
WITH t AS (
SELECT 'A' PLACE, '흑점' ERROR_NAME,  189 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'B' PLACE, '흑점' ERROR_NAME,    0 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'A' PLACE, '합판(박리)불량' ERROR_NAME,    593 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'B' PLACE, '합판(박리)불량' ERROR_NAME, 0 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'C' PLACE, '합판(박리)불량' ERROR_NAME,    0 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'D' PLACE, '합판(박리)불량' ERROR_NAME, 0 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'A' PLACE, '터짐/취급' ERROR_NAME,   2753 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'B' PLACE, '터짐/취급' ERROR_NAME,   0 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'C' PLACE, '터짐/취급' ERROR_NAME,   0 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'D' PLACE, '터짐/취급' ERROR_NAME,   0 ERROR_COUNT FROM DUAL UNION ALL
SELECT 'E' PLACE, '터짐/취급' ERROR_NAME,   0 ERROR_COUNT FROM DUAL )
SELECT * FROM t
ORDER BY ERROR_NAME, PLACE
--, ERROR_COUNT DESC
;

아앗 답변이 달린 뒤 예시 기준이 더 추가 됬군요..ㅎㅎ

by 우리집아찌 [2023.03.17 12:59:03]

에러 코드같은건 없나요?


by 큐니백작 [2023.03.17 13:17:28]

답변감사합니다

제가 원하는 답변은 아니네요..T.T


by 우리집아찌 [2023.03.17 13:21:50]

정렬때문에 ERROR_NAME 말고 ERROR_CODE가 있는지 문의드린겁니다.


by 마농 [2023.03.17 13:57:50]

 ORDER BY MAX(error_count) OVER(PARTITION BY error_name) DESC, error_name, error_count DESC, place


by 큐니백작 [2023.03.17 14:06:57]

와~~우 마농님 답변감사합니다

깔끔하게 정렬되네요...


by 신이만든지기 [2023.03.17 16:51:05]

order by 구문에 분석함수를 쓸 수 있다는 사실을 이제야 알게 됐네요.

좋은 정보 감사합니다.


by 우리집아찌 [2023.03.17 18:05:50]

전 보통 분석함수는 select 절에 넝고 order by 에 alias 값으로 정렬 해서 쓰고 있었습니다.

order by 에는 안되는줄 알고있었는데 되네요!

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