Sub Query

홍태화·2024년 3월 22일

😊 단일 값을 반환하는 서브쿼리

평균 에이전시 비용을 계산해 평균 보다 많이 받는 에이전시 반환

SELECT *
FROM sales_agents
WHERE agency_fee > (SELECT AVG(agency_fee) FROM sales_agents);

각 그림의 금액 옆에 전체 그림의 평균 금액을 함께 보여주고 싶을 때

SELECT name AS painting, price,( SELECT avg(price) FROM paintings ) AS avg_price
FROM paintings;
  • 두개의 예시에서 사용된 서브 쿼리 메인 쿼리에 독립적이다
  • 즉 서브 쿼리만 가지고도 쿼리가 실행이 되고 그 자체로도 유의미한 수치를 얻어낼 수 있다

😊 여러 행을 반환하는 서브쿼리

1. 여러 행을 가진 한 개의 열을 반환하는 서브쿼리

  • 주로 WHERE 절에 사용되어 메인 쿼리의 결과를 필터링하는 데에 사용된다
  • 보통 IN, NOT IN, ANY, ALL, EXISTS, NOT EXISTS와 같은 연산자와 함께 사용해
  • 서브 쿼리를 통해 반환된 여러 개의 값을 특정 값과 비교한다
SELECT AVG(agency_fee)
FROM sales_agents
WHERE id NOT IN (SELECT id FROM managers);
AVG(agency_fee)
3,315
SELECT id FROM managers;
id
1
2
3

2. 여러 행을 가진 다수의 열을 반환하는 서브쿼리

  • 각 갤러리에서 최고급여를 받는 사원의 이름과 그 사원이 속한 갤러리의 ID 값
SELECT first_name, gallery_id 
FROM sales_agents
WHERE (agency_fee , gallery_id) IN 
(SELECT MAX(agency_fee), gallery_id  FROM sales_agents GROUP BY gallery_id );
first_namegallery_id
Denis2
Kate3
Helen1
SELECT MAX(agency_fee), gallery_id  FROM sales_agents GROUP BY gallery_id;
MAX(agency_fee)gallery_id
2,2502
3,1203
4,5001

출처 : https://kimsyoung.tistory.com/

profile
우어어아아앙

0개의 댓글