다중 열 서브쿼리에 max 포함될 때 null 값 조회 0 5 493

by 상블리 [SQL Query] [2021.09.08 09:56:41]


ID가 중복일 때 SALES가 최댓값이 레코드의 칼럼들을 조회 하고 싶습니다ㅏ.

다중열 서브쿼리로 조회를 하는데  SALES가 최댓값이 NULL인것은 조회가 안되어서  구루비에 질의를 올립니다.ㅠ

ID와 SALES 모두 중복일 때는  해당 중복값들중에서 아무 레코드나 반환해도 상관없습니다.( ID:2  SALES: NULL 해당)

<리스트>

ID SALES SALARY TAX
1 500 300 50
1 30 15 3
1 10 5 1
2 NULL 100 30
2 NULL 50 10
3 NULL NULL NULL

               

<원하는 조회 리스트>

ID SALES SALARY TAX
1 500 300 50
2 NULL 100 30
3 NULL NULL NULL

 

by 동동동 [2021.09.08 11:10:33]
WITH TMP (ID, SALES, SALARY, TAX) AS (
SELECT 1,	500,	300,	50   FROM DUAL UNION ALL
SELECT 1,	30, 	15, 	3    FROM DUAL UNION ALL
SELECT 1,	10, 	5,  	1    FROM DUAL UNION ALL
SELECT 2,	NULL,	100,	30   FROM DUAL UNION ALL
SELECT 2,	NULL,	50, 	10   FROM DUAL UNION ALL
SELECT 3,	NULL,	NULL,	NULL FROM DUAL
)
SELECT ID
     , MAX(SALES) AS SALES
     , MAX(SALARY) AS SALARY
     , MAX(TAX) AS TAX
  FROM TMP
 GROUP BY ID

 


by 모래가흙흙 [2021.09.08 11:13:25]
SELECT ID,
       SALES,
       SALARY,
       TAX
  FROM (SELECT ID,
               SALES,
               SALARY,
               TAX,
               ROW_NUMBER() OVER(PARTITION BY ID ORDER BY SALES DESC) AS ROWN
  FROM TABLE_NAME)
WHERE ROWN = 1

 


by jkson [2021.09.08 12:53:18]

ROW_NUMBER() OVER(PARTITION BY ID ORDER BY SALES DESC NULLS LAST) AS ROWN

특정 ID에 SALES 값이 NULL과 값이 있는 데이터가 동시에 존재한다면 NULL값을 제외해야 하므로

이렇게 해주면 더 좋을 것 같네요.


by 모래가흙흙 [2021.09.08 13:19:00]

앗, 감사합니다


by 마농 [2021.09.08 12:50:24]

1. 작성하신 쿼리를 올려주시면 좋습니다.
2. 최대값이 중복되어 2개 이상이면 결과가 어떻게 나와야 하나요?
3. 값이 있는 것과 널이 섞여 있는 경우 결과가 어떻게 나와야 할까요?

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