database/Oracle

[Oracle] 다중 컬럼 sub query

솧이 2022. 9. 2. 07:56

다중 컬럼 sub query

sub query 결과가 여러 column인 경우

주로 primary key를 여러 column을 합쳐서 만들었을 때 한꺼번에 비교하기 위해 자주 사용한다

 

[실습] #7201

SELECT grade, max(height) FROM T_STUDENT GROUP BY grade;

↓

SELECT grade "학년", name "이름", height "키"
FROM T_STUDENT 
WHERE (grade, height) IN (SELECT grade, max(height) -- 같은 값만 뽑아져서 나온다
			FROM T_STUDENT 
			GROUP BY grade)
ORDER BY "학년";

 

[실습] #7202 

?? where절의 p.deptno ??

SELECT p.profno "교수번호"
, p.name "교수명"
, to_char(HIREDATE, 'yyyy-mm-dd') "입사일"
, d.dname "학과명"
FROM t_professor p, t_department d
WHERE (p.deptno,  p.hiredate) IN (SELECT deptno, min(to_char(hiredate, 'yyyy-mm-dd')) AS "min(hiredate)"
                                    FROM t_professor
                                    GROUP by deptno)
AND p.deptno = d.deptno;

 

 

[실습] #7203

번외, null 값 직급 포함시켜보자!

오라클 쿼리를 작성할 때 거리 모든 쿼리에는 조인이 포함되어 있다

조인 시 주의사항 중 하나는 NULL값 = NULL값으로 조인이 들어가는 경우는 조인이 되지 않아 값이 누락이 발생한다.

null값이 들어 오는 경우는 nvl을 처리해서 조인을 해야 한다

SELECT name, post, pay
FROM T_EMP2 
WHERE (nvl(post, ' '), pay) IN (SELECT nvl(post, ' '), max(pay)
                                FROM T_EMP2 
                                GROUP BY post);

 

 

'database > Oracle' 카테고리의 다른 글

[Oracle] 위치별 sub query  (0) 2022.09.02
[Oracle] 상호연관 sub query  (0) 2022.09.02
[Oracle] 다중행 query  (0) 2022.09.02
[Oracle] 단일행 sub query  (0) 2022.09.02
[Oracle] using 조건절  (0) 2022.09.02