728x90
- 서브쿼리 강의로 넘어왔는데.. 매번 그냥 냅다썼지 잘 몰라서 캡처본 올림
- *엘리스 sql 강의임*

- 기본 구조!!
- 서브쿼리 먼저 실행되고 여러 번 실행 가능임.
-- 사원 번호가 7인 사원보다 나이가 어린 사원의 모든 컬럼을 조회 하는 쿼리를 작성하세요.
select *
from emp
where birthdate > (select birthdate
from emp
where empnum = 7);






- 이거 좀 헷갈리는 듯..?
- > any() : 1개만 커도 되니깐 크려면 최소값보다만 커도 되고, 작으려면 최대값보다 작아야 하고 -> 내부적으로 모두 or 연산
- > all() : 모든 값보다 커야 되니깐 최대값보다 커야 함. 반대는 최솟값보다 작아야 함. -> 내부적으로 모두 and 연산

select *
from emp
where sal > all (select max(sal) -- 이걸 잘 안썼는데.. 괄호 다음에 써주면 됌!
from emp
where job = 'manager');
- '누구든 아니면 ~별로' -> any 쓸 것..
- 약간 .. 뭐랄까 .. in이랑의 차이를 내가 명확히 인식하지 못하는 것 같애..
=> 연산자 안 쓰고 걍 in으로 해도 됌!
*any, all만 비교연산이 가능!
-- 각 부서별 나이가 제일 많은 사원을 조회하는 쿼리를 작성해주세요.
select *
from emp
where birthdate = any (select min(birthdate)
from emp
group by deptno);
-- 그래 그냥 in 도 가능 굳이 연산자 안써도 됌
select *
from emp
where birthdate in (select min(birthdate)
from emp
group by deptno);



-- salaries 테이블에서 직원 번호와 한 직원의 평균 급여를 중복없이 출력해보세요.
select distinct emp_no,
(select avg(salary)
from salaries a
where a.emp_no = b.emp_no) as avg_salary -- where이 아니라.. 그냥 그룹바이로 하려고 하니까 틀렸음
from salaries b;
728x90
반응형
'Data Science > SQL' 카테고리의 다른 글
[프로그래머스 SQL] 데이터 타입 주의 할 것. (date는 left()-> X) (0) | 2025.03.02 |
---|---|
[Elice SQL] 집합연산자 & 계층형 질의 (0) | 2025.03.02 |
[프로그래머스 sql] date_format()안 해도 month() 가능 (0) | 2025.02.26 |
[프로그래머스 sql] left join, count()는 null을 0으로 셈 (0) | 2025.02.25 |
[elice sql] sql 데이터 삽입/수정/삭제 (0) | 2025.02.25 |