Programming/Postgres DB
[PostgresDB-2] 21. 서브쿼리와 IN, ALL, ANY (실습)
midnightcoder
2022. 12. 29. 15:45
참고 : https://cloudstudying.kr/lectures/516
19 필터링과 서브쿼리(IN, ALL, ANY) | CloudStudying
# 필터링과 서브쿼리(IN, ALL, ANY) ## 미션 --- 다음 카페 DB를 가지고, 서브쿼리 관련 필터링 문제를 푸시오. #### 카페 DB 구조도 
https://midnightcoding.tistory.com/64
[PostgresDB-2] 10. Relationship (별다방 카페 실습)
참고 : https://cloudstudying.kr/lectures/509 테이블생성 및 데이터 DB 쿼리 CREATE TABLE orders( id SERIAL PRIMARY KEY, --PK status VARCHAR(50), created_at TIMESTAMPTZ ); CREATE TABLE beverages( id SERIAL PRIMARY KEY, name VARCHAR(50), price INT
midnightcoding.tistory.com
카페 DB 구조도
카페 DB 데이터
1. 판매량 상위 3개 음료를 다음과 같이 조회하려 한다. 주어진 두 쿼리를 조합하여 이를 구하시오.
-- 먼저 판매량 상위 3개 음료
SELECT
beverage_id AS "ID",
SUM(count) AS "판매량"
FROM
order_details
GROUP BY
beverage_id
ORDER BY
"판매량" DESC
LIMIT
3
;
SELECT
beverages.id AS "ID",
beverages.name AS "음료명"
FROM
beverages
WHERE
id IN (
-- 판매량 상위 3개 음료
SELECT
beverage_id
FROM
order_details
GROUP BY
beverage_id
ORDER BY
SUM(count) DESC
LIMIT
3
)
;
2. 아메리카노와 라떼보다 가격이 싼 음료는 다음과 같다. 주어진 쿼리를 조합하여 이를 조회하시오.
--먼저 아메리카노와 라떼의 가격
SELECT
name AS "음료명",
price AS "가격"
FROM
beverages
WHERE
name IN ('아메리카노', '라떼')
;
SELECT
name AS "음료명",
price AS "가격"
FROM
beverages
WHERE
price < ALL(
-- 아메리카노와 라떼의 가격
SELECT
price AS "가격"
FROM
beverages
WHERE
name IN ('아메리카노', '라떼')
)
;
3. 커피가 아닌 음료들 중, 적어도 한 커피 보다 가격이 비싼 것은 다음과 같다. 주어진 두 쿼리를 조합하여 이를 조회하시오.
-- 모든 커피의 가격
SELECT
price
FROM
beverages
WHERE
btype = 'COFFEE'
;
SELECT
name AS "음료명",
price AS "가격"
FROM
beverages
WHERE
btype != 'COFFEE'
AND
price > ANY(
-- 모든 커피의 가격 중 하나라도 크다면
SELECT
price
FROM
beverages
WHERE
btype = 'COFFEE'
)
;
출처 : 홍팍의 'SQL 데이터 분석, 활용!'