문제
코딩테스트 연습 - 가격이 제일 비싼 식품의 정보 출력하기 | 프로그래머스 스쿨
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
SELECT
PRODUCT_ID,
PRODUCT_NAME,
PRODUCT_CD,
CATEGORY,
PRICE
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);
서브 쿼리를 사용하면 쉽게 풀 수 있는 문제입니다.
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)
먼저 MAX 함수를 이용해 최대값을 찾아둡니다.
WHERE 절에서 그 값과 같은 걸 찾아서 SELECT를 해주면 끝입니다.
서브 쿼리 사용 방식
서브쿼리는 보통 다음과 같은 위치에서 사용됩니다
- SELECT 절
- 데이터를 계산하거나, 비교하기 위한 추가 값을 반환할 때 사용.
- FROM 절
- 테이블처럼 사용되어 결과를 기반으로 새로운 데이터 집합을 생성.
- WHERE 절
- 특정 조건을 필터링하기 위해 값을 반환.
- HAVING 절
- 그룹화된 데이터에 조건을 적용.
1. SELECT 절에서 서브쿼리
SELECT
PRODUCT_ID,
PRODUCT_NAME,
PRICE,
(SELECT AVG(PRICE) FROM FOOD_PRODUCT) AS AVG_PRICE
FROM FOOD_PRODUCT;
추가 계산 결과를 컬럼으로 가져옵니다.
2. FROM 절에서 서브쿼리
SELECT E.DEPARTMENT_ID, E.EMPLOYEE_ID, E.SALARY
FROM EMPLOYEES E
JOIN (
SELECT DEPARTMENT_ID, MAX(SALARY) AS MAX_SALARY
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
) T
ON E.DEPARTMENT_ID = T.DEPARTMENT_ID AND E.SALARY = T.MAX_SALARY;
서브쿼리를 테이블처럼 사용하여 중간 결과를 생성하여 사용합니다.
3. WHERE 절에서 서브쿼리
SELECT PRODUCT_ID, PRODUCT_NAME, PRICE
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);
문제에서 나왔던 방식으로 가장 일반적으로 사용됩니다.
4. HAVING 절에서 서브쿼리
SELECT DEPARTMENT_ID, COUNT(*) AS EMP_COUNT
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
HAVING COUNT(*) >= (SELECT AVG(COUNT(*)) FROM EMPLOYEES GROUP BY DEPARTMENT_ID);
그룹화된 데이터에 조건을 적용하는데 사용됩니다.
'DB > SQL' 카테고리의 다른 글
[SQL]재구매가 일어난 상품과 회원 리스트 구하기 - SQL 고득점 Kit (0) | 2025.02.13 |
---|---|
[SQL]특정 세대의 대장균 찾기 - SQL 고득점 Kit (0) | 2025.02.12 |
[SQL]서울에 위치한 식당 목록 출력하기 - SQL 고득점 Kit (0) | 2025.02.12 |
[SQL]3월에 태어난 여성 회원 목록 출력하기 - SQL 고득점 Kit (0) | 2025.02.11 |
[SQL]평균 일일 대여 요금 구하기 - SQL 고득점 Kit (0) | 2025.02.11 |