다중 컬럼 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 |