-
서브쿼리DB/Postgresql(DB) 2023. 11. 28. 18:57더보기
-- 1. 음료(beverages)의 이름 및 가격과 함께, 가장 비싼 음료와의 가격 차이를 조사하려 한다.주어진 두 쿼리를 조합하여 이를 구하시오.
-- (SELECT 절 서브쿼리를 사용할 것SELECT -- outter query(main query)
-- 음료명,가격,가격 차이 조회
SELECT
name AS "음료명",
price AS "가격",
price - (
-- 가장 비싼 음료의 가격 (단일값 결과 생성, 1x1열만 가능)
SELECT -- Inner query(sub query)
MAX(price),123
FROM
beverages -- 5800원
) AS "최대 가격과의 차이"
FROM
beverages
;
-- 2. 주문내역(order_details)로부터 주문 별 음료 개수의 평균을 조회하려 한다. 주어진 쿼리를 조합하여 이를 구하시오. (FROM 절 서브쿼리를 사용할 것)
-- 주문 별 음료 개수 평균 집계(2)
SELECT
AVG(sum) AS "주문 별 음료 개수 평균"
FROM
(
-- 주문 별 음료 개수 (1)
SELECT
order_id,
SUM(count) -- AVG(SUM(count))는 중첩이 안됨
FROM
order_details
GROUP BY
order_id
) AS "주문 별 음료 개수 집계"
;
-- 3. 주문내역(order_details)로부터 음료 별 주문 개수를 조회하려 한다. 주어진 두 쿼리를 조합하여 이를 구하시오. (JOIN 절 서브쿼리를 활용할 것)
-- 음료 id 별 주문 개수
SELECT
name AS "음료명",
COALESCE(total_count,0) AS "주문개수"
FROM
beverages
LEFT JOIN (
-- 음료 id별 주문 개수
SELECT
beverage_id,
SUM(count) AS"total_count"
FROM
order_details
GROUP BY
beverage_id
) AS b_counts ON
b_counts.beverage_id = beverages.id
;
-- 4. 평균 가격보다 비싼 음료(beverages)를 다음과 같이 조회하려 한다. 주어진 두 쿼리를 조합하여 이를 구하시오. (WHERE 절 서브쿼리를 사용할 것)
-- 평균 가격보다 싼 음료를 조회
SELECT
name AS "음료명",
price AS "가격"
FROM
beverages
WHERE
price > (
-- 음료의 평균 가격 조회
SELECT
AVG(price)
FROM
beverages
)
;
https://cloudstudying.kr/lectures/514
출저: 홍팍 (https://www.youtube.com/@hongpark)
이 블로그 기록은 개인 공부용 기록입니다.
'DB > Postgresql(DB)' 카테고리의 다른 글
필터링과 서브쿼리(IN.ALL.ANY) (1) 2023.11.28 그룹필터링 , 정렬, 조회 개수 지정 (0) 2023.11.28 그룹화(Group By 와 집계 함수) (0) 2023.11.28 Join (0) 2023.11.28 primary key & Foreign Key (0) 2023.11.27