개발자는 기록이 답이다
프로그래머스 SQL 76문제 풀기 ( 정답률 높은 순 기준 20개 ) - 3 본문

LV.2 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (정답률 : 86%) 🌟🌟 정규 표현식 가능
https://school.programmers.co.kr/learn/courses/30/lessons/151137
한개의 칼럼에 데이터가 ,로 여러개가 들어있을경우 %%로 가져오기
SELECT CAR_TYPE, COUNT(CAR_TYPE) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%가죽시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE;
REGEXP_LIKE(칼럼명, '문자열패턴')도 사용가능
SELECT CAR_TYPE,
COUNT(CAR_TYPE) AS CASRS
FROM CAR_RENTAL_COMPANY_CAR
WHERE REGEXP_LIKE(OPTIONS, '통풍시트|열선시트|가죽시트')
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE ASC;
REGEXP_LIKE 함수는 정규 표현식을 사용하여 문자열에 패턴 매칭을 수행한다.
occupation 열의 값이 "^Manager" 패턴과 일치하는지 확인합니다. "^"는 문자열이 "Manager"로 시작하는지 나타내는 정규 표현식 메타 문자 중 하나이다. 복잡한 문자열 패턴을 검색하거나 데이터의 패턴을 분석할 때 매우 유용하다.
// REGEXP_LIKE 예시
SELECT *
FROM EMPLOYEE
WHERE REGEXP_LIKE(occupation, '^Manager');
LV.2 상품 별 오프라인 매출 구하기 (정답률 : 86%) 🌟
https://school.programmers.co.kr/learn/courses/30/lessons/131533
매출액(판매가*판매랑)이 아니고 매출액(판매가*판매랑)의 합계라서 SUM이 필요하다.
문제 제대로 읽자..
SELECT p.PRODUCT_CODE, SUM(p.PRICE *os.SALES_AMOUNT) AS SALES
FROM PRODUCT p
JOIN OFFLINE_SALE os ON p.PRODUCT_ID = os.PRODUCT_ID
GROUP BY p.PRODUCT_CODE
ORDER BY SALES DESC, PRODUCT_CODE ASC;
LV.3 있었는데요 없었습니다 (정답률 : 85%)
https://school.programmers.co.kr/learn/courses/30/lessons/59043
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.DATETIME > O.DATETIME
ORDER BY I.DATETIME ASC;
LV.3 카테고리별 도서 판매량 집계하기 (정답률 : 85%)
https://school.programmers.co.kr/learn/courses/30/lessons/144855
카테고리 별로 - GROUP BY CATEGORY
도서 판매랴을 합산, 판매량 집계 - SUM(SALES))
SELECT CATEGORY, SUM(SALES) AS TOTAL_SALES
FROM BOOK B JOIN BOOK_SALES BS
ON B.BOOK_ID = BS.BOOK_ID
WHERE BS.SALES_DATE LIKE '2022-01%'
GROUP BY B.CATEGORY
ORDER BY CATEGORY;
SELECT B.CATEGORY
, SUM(SALES) AS TOTAL_SALES
FROM BOOK B
, BOOK_SALES BS
WHERE B.BOOK_ID = BS.BOOK_ID
AND BS.SALES_DATE BETWEEN '2022-01-01' AND '2022-01-31'
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY ASC
LV.3 오랜 기간 보호한 동물(2) (정답률 : 85%) 🌟🌟🌟
https://school.programmers.co.kr/learn/courses/30/lessons/59411
보호기간이 가장 길었던 동물 쿼리를 작성해야 하는데, ORDER BY에서 -가 되는거 처음 알았다.
저것 대신 TIMESTAMPDIFF함수를 사용할 수도 있다. 가장 길었던거는 차이를 계산하고 DESC로 알 수 있다.
TIMESTAMPDIFF : 두 날짜 또는 시간 간의 차이를 계산하는 데 사용되는 함수
TIMESTAMPDIFF(unit, start_date, end_date)
--
`unit`: 차이를 계산할 때 사용할 시간 단위를 나타내는 문자열입니다.
예를 들어, 'SECOND', 'MINUTE', 'HOUR', 'DAY', 'MONTH', 'YEAR' 등이 될 수 있습니다.
이 단위에 따라 결과가 다르게 반환됩니다.
`start_date`: 차이를 계산하기 시작하는 날짜 또는 시간입니다.
`end_date`: 차이를 계산을 끝내는 날짜 또는 시간입니다.
예를 들어, 두 날짜 간의 차이를 초,분,시간,일,월 단위로 계산하려면 다음과 같이 사용할 수 있습니다.
SELECT
TIMESTAMPDIFF(SECOND, '2023-10-04 10:00:00', '2023-10-05 10:00:00') AS SECOND,
TIMESTAMPDIFF(MINUTE, '2023-10-04 10:00:00', '2023-10-05 10:00:00') AS MINUTE,
TIMESTAMPDIFF(HOUR, '2023-10-04 10:00:00', '2023-10-05 10:00:00') AS HOUR,
TIMESTAMPDIFF(DAY, '2023-10-04 10:00:00', '2023-10-05 10:00:00') AS DAY,
TIMESTAMPDIFF(MONTH, '2023-10-04 10:00:00', '2023-10-05 10:00:00') AS MONTH;


## 마이너스 연산자
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS INS JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
ORDER BY OUTS.DATETIME - INS.DATETIME DESC LIMIT 2;
--
## TIMESTAMPDIFF함수
SELECT i.ANIMAL_ID, i.NAME
FROM ANIMAL_INS i JOIN ANIMAL_OUTS o
ON i.ANIMAL_ID = o.ANIMAL_ID
ORDER BY TIMESTAMPDIFF(SECOND,i.DATETIME,o.DATETIME) DESC
limit 2;
--
## DATEDIFF함수
SELECT i.ANIMAL_ID, i.NAME
FROM ANIMAL_INS i JOIN ANIMAL_OUTS o
ON i.ANIMAL_ID = o.ANIMAL_ID
ORDER BY DATEDIFF(o.DATETIME,i.DATETIME) DESC
limit 2;
SELECT *
FROM
(
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS INS
JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
ORDER BY TIMESTAMPDIFF(SECOND, INS.DATETIME, OUTS.DATETIME) DESC
) a
LIMIT 2;
LV.4 보호소에서 중성화한 동물 (정답률 : 85%) 🌟🌟
https://school.programmers.co.kr/learn/courses/30/lessons/59045
보호소에 들어올 당시에는 중성화되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물을 찾을때
WHERE에 길게 작성해도 되지만, != 나 not like로 빠르게 해결할 수 있다.
SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME
FROM ANIMAL_INS INS JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.SEX_UPON_INTAKE LIKE 'Intact%' AND (OUTS.SEX_UPON_OUTCOME LIKE 'Spayed%' OR OUTS.SEX_UPON_OUTCOME LIKE 'Neutered%')
ORDER BY ANIMAL_ID;
SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME
FROM ANIMAL_INS INS JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.SEX_UPON_INTAKE != OUTS.SEX_UPON_OUTCOME
ORDER BY ANIMAL_ID;
SELECT a.ANIMAL_ID, a.ANIMAL_TYPE, a.NAME
FROM ANIMAL_INS a join ANIMAL_OUTS b
on a.ANIMAL_ID = b.ANIMAL_ID
WHERE a.SEX_UPON_INTAKE like 'Intact%' and b.SEX_UPON_OUTCOME not like 'Intact%'
ORDER BY a.ANIMAL_ID;
LV.2 조건에 맞는 도서와 저자 리스트 출력하기 (정답률 : 85%)
https://school.programmers.co.kr/learn/courses/30/lessons/144854
DATA_FORMAT대신 TO_CHAR()함수를 써도 된다.
SELECT B.BOOK_ID, A.AUTHOR_NAME, DATE_FORMAT(B.PUBLISHED_DATE,'%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK B JOIN AUTHOR A
ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE B.CATEGORY = '경제'
ORDER BY B.PUBLISHED_DATE;
SELECT b.BOOK_ID AS BOOK_ID, a.AUTHOR_NAME AS AUTHOR_NAME,
TO_CHAR(b.PUBLISHED_DATE, 'yyyy-mm-dd') AS PUBLISHED_DATE
FROM BOOK b JOIN AUTHOR a
ON b.AUTHOR_ID = a.AUTHOR_ID
WHERE b.CATEGORY = '경제'
ORDER BY PUBLISHED_DATE;
LV.3 조건별로 분류하여 주문상태 출력하기 (정답률 : 84%) 🌟🌟🌟
https://school.programmers.co.kr/learn/courses/30/lessons/131113
5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력!!!
SELECT ORDER_ID,
PRODUCT_ID,
DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE,
CASE
WHEN DATEDIFF(OUT_DATE, '2022-05-01') <= 0 THEN '출고완료'
WHEN DATEDIFF(OUT_DATE, '2022-05-01') > 0 THEN '출고대기'
ELSE '출고미정' END AS 출고여부
FROM FOOD_ORDER
ORDER BY ORDER_ID
SELECT ORDER_ID,
PRODUCT_ID,
DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE,
CASE
WHEN OUT_DATE <= '2022-05-01' THEN '출고완료'
WHEN OUT_DATE > '2022-05-01' THEN '출고대기'
ELSE '출고미정' END AS 출고여부
FROM FOOD_ORDER
ORDER BY ORDER_ID
`DATEDIFF` 함수 : 두 날짜 간의 일(day) 차이를 계산하는 함수입니다. 이 함수는 하나의 날짜로부터 다른 날짜까지의 일(day) 수를 반환합니다. `DATEDIFF` 함수의 일반적인 사용법은 다음과 같습니다:
DATEDIFF(end_date, start_date)
- `end_date`: 차이를 계산하는 대상 날짜 중 하나입니다. 종료 날짜(end date)로 사용됩니다.
- `start_date`: 차이를 계산하는 대상 날짜 중 하나입니다. 시작 날짜(start date)로 사용됩니다.
`DATEDIFF` 함수는 `end_date`에서 `start_date`를 뺀 다음, 결과를 일(day) 단위로 반환합니다. 만약 `end_date`가 `start_date`보다 이후인 경우 양수를 반환하며, `end_date`가 `start_date`보다 이전인 경우 음수를 반환합니다. 두 날짜가 동일한 경우 0을 반환합니다.
SELECT DATEDIFF('2023-10-10', '2023-10-01') AS DAY_DIFFERENCE;
이 쿼리는 '2023-10-10'과 '2023-10-01' 사이의 일(day) 차이를 계산하고, `DAY_DIFFERENCE`라는 별칭으로 결과를 반환합니다. 결과로는 9가 반환됩니다.
LV.2 루시와 엘라 찾기 (정답률 : 84%)
https://school.programmers.co.kr/learn/courses/30/lessons/59046
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
LV.2 성분으로 구분한 아이스크림 총 주문량(정답률 : 83%) 🌟
https://school.programmers.co.kr/learn/courses/30/lessons/133026
성분 타입에 대한 아이스크림 총 주문량! GROUP BY , SUM
SELECT INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDER
FROM FIRST_HALF F JOIN ICECREAM_INFO I
ON F.FLAVOR = I.FLAVOR
GROUP BY I.INGREDIENT_TYPE
ORDER BY `TOTAL_ORDER` ASC;
LV.3 조건에 맞는 사용자와 총 거래금액 조회하기(정답률 : 83%) 🌟🌟🌟
https://school.programmers.co.kr/learn/courses/30/lessons/164668
HAVING 절은 집계 함수를 사용한 결과에 조건을 적용하는데 사용
WHERE 절에서 집계 함수로 생성된 별칭인 TOTAL_SALES을 직접 사용하는 것은 일반적으로 허용되지 않습니다. 이유는 WHERE 절은 데이터를 필터링하는 단계이며, 그 단계에서는 집계 함수의 결과인 TOTAL_SALES 값을 사용할 수 없습니다. 집계 함수는 GROUP BY와 함께 사용되며, HAVING 절에서 집계 함수 결과를 필터링하는 것이 일반적인 방법입니다.
따라서 TOTAL_SALES를 WHERE 절에서 직접 사용하는 대신, HAVING 절에서 필터링하도록 수정하는 것이 올바른 접근입니다
SELECT uu.USER_ID, uu.NICKNAME, SUM(ub.PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD ub JOIN USED_GOODS_USER uu
ON ub.WRITER_ID = uu.USER_ID
WHERE ub.STATUS = 'DONE'
GROUP BY ub.WRITER_ID
HAVING TOTAL_SALES >= 700000
ORDER BY TOTAL_SALES ASC;
LV.1 조건에 맞는 도서 리스트 출력하기(정답률 : 82%) 🌟
https://school.programmers.co.kr/learn/courses/30/lessons/144853
SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK
WHERE CATEGORY = '인문' AND PUBLISHED_DATE LIKE '2021%'
ORDER BY PUBLISHED_DATE;
LV.2 가격대 별 상품 개수구하기(정답률 : 82%) 🌟🌟🌟
https://school.programmers.co.kr/learn/courses/30/lessons/131530
case when 다중조건 걸때 THEN 0하고 ','넣지말아라!!!!!!
그리고 나는 꽤 무식하게 풀었는데.. TRUNCATE사용하면 알아서 만원단위로 잘라준다..PRICE를 뒤에서부터 4개 삭제
SELECT CASE WHEN PRICE < 10000 THEN 0
WHEN PRICE >= 10000 AND PRICE < 20000 THEN 10000
WHEN PRICE >= 20000 AND PRICE < 30000 THEN 20000
WHEN PRICE >= 30000 AND PRICE < 40000 THEN 30000
WHEN PRICE >= 40000 AND PRICE < 50000 THEN 40000
WHEN PRICE >= 50000 AND PRICE < 60000 THEN 50000
WHEN PRICE >= 60000 AND PRICE < 70000 THEN 60000
WHEN PRICE >= 70000 AND PRICE < 80000 THEN 70000
WHEN PRICE >= 80000 AND PRICE < 90000 THEN 80000
END AS PRICE_GROUP,
COUNT(PRICE) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP;
SELECT CASE WHEN PRICE < 10000 THEN 0
ELSE TRUNCATE(PRICE, -4)
END AS PRICE_GROUP,
COUNT(PRICE) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP;
truncate사용하면 case when 사용 안해도 된다
SELECT TRUNCATE(PRICE, -4) AS PRICE_GROUP, COUNT(PRICE) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP;
SELECT FLOOR(PRICE/10000)*10000 AS PRICE_GROUP
, COUNT(*) AS PRODUCTS
FROM product
GROUP
BY PRICE_GROUP
ORDER
BY PRICE_GROUP ASC
FLOOR는 아래 참고링크 첫번째꺼
TRUNCATE 테스트
SELECT TRUNCATE(33210, -4) AS PRICE_GROUP
FROM PRODUCT;
// 30000 뒤에서부터 4개 제거
SELECT TRUNCATE(33210, -3) AS PRICE_GROUP
FROM PRODUCT;
// 33000 뒤에서부터 3개 제거
SELECT TRUNCATE(33210, -2) AS PRICE_GROUP
FROM PRODUCT;
// 33200 뒤에서부터 2개 제거
SELECT TRUNCATE(33210.123, 1) AS PRICE_GROUP
FROM PRODUCT;
// 33210.1 소수점 1개만 보여주겠다
SELECT TRUNCATE(33210.123, 2) AS PRICE_GROUP
FROM PRODUCT;
// 33210.12 소수점 2개만 보여주겠다
LV.2 3월에 태어난 여성 회원 목록 출력하기 (정답률 : 82%) 🌟
https://school.programmers.co.kr/learn/courses/30/lessons/131120
여성인것도 조건절 잊지말자!
SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE DATE_OF_BIRTH LIKE '%-03-%' AND TLNO IS NOT NULL AND GENDER = 'W'
ORDER BY MEMBER_ID;
SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE MONTH(DATE_OF_BIRTH)=3
AND TLNO IS NOT NULL
AND GENDER ='W'
ORDER BY MEMBER_ID;
LV.1 평균 일일 대여 요금 구하기 (정답률 : 81%) 🌟
https://school.programmers.co.kr/learn/courses/30/lessons/151136
SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV';
LV.3 즐겨찾기가 가장 많은 식당 정보 출력하기 (정답률 : 81%) 🌟🌟🌟🌟🌟 서브쿼리!
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM rest_info
WHERE (food_type, favorites) IN (SELECT food_type, max(favorites)
FROM REST_INFO
GROUP BY FOOD_TYPE)
ORDER BY food_type desc;
딱 내 상황에 대한 블로그 포스팅이있어서 바로 링크를 붙이고자 한다.
[프로그래머스 SQL] 즐겨찾기가 가장 많은 식당 정보 출력하기
정답코드 SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM rest_info WHERE (food_type, favorites) IN (SELECT food_type, max(favorites) FROM REST_INFO GROUP BY FOOD_TYPE) ORDER BY food_type desc; 설명 아마도 이 글을 클릭 한 사람이라면
coduking.com
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM rest_info
WHERE favorites IN (SELECT max(favorites)
FROM REST_INFO
GROUP BY FOOD_TYPE)
GROUP BY FOOD_TYPE
ORDER BY food_type desc;
LV.3 대여 기록이 존재하는 자동차 리스트 구하기 (정답률 : 80%) 🌟🌟🌟 서브쿼리도 사용 가능!
https://school.programmers.co.kr/learn/courses/30/lessons/157341
SELECT DISTINCT(c.CAR_ID)
FROM CAR_RENTAL_COMPANY_CAR c JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY h
ON c.CAR_ID = h.CAR_ID
WHERE c.CAR_TYPE = '세단' AND h.START_DATE Like '%-10-%'
ORDER BY c.CAR_ID DESC;
SELECT DISTINCT(C.CAR_ID)
FROM CAR_RENTAL_COMPANY_CAR AS C
INNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS H ON C.CAR_ID = H.CAR_ID
WHERE CAR_TYPE = '세단' AND MONTH(START_DATE)=10
ORDER BY CAR_ID DESC
서브 쿼리 이용
SELECT DISTINCT(CAR_ID)
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE MONTH(START_DATE) = 10
AND CAR_ID IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = '세단'
)
ORDER BY CAR_ID DESC
// distinct대신 group by사용
SELECT A.CAR_ID
FROM CAR_RENTAL_COMPANY_CAR AS A
JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS B
ON A.CAR_ID = B.CAR_ID
WHERE A.CAR_TYPE = '세단'
AND DATE_FORMAT(B.START_DATE, '%m') = '10'
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
LV.4 5월 식품들의 총매출 조회하기(정답률 : 80%) 🌟
SELECT p.PRODUCT_ID, p.PRODUCT_NAME, SUM(p.PRICE * o.AMOUNT) AS TOTAL_SALES
FROM FOOD_PRODUCT p JOIN FOOD_ORDER o
on p.PRODUCT_ID = o.PRODUCT_ID
WHERE YEAR(o.PRODUCE_DATE) = 2022 AND MONTH(o.PRODUCE_DATE) = 5
GROUP BY p.PRODUCT_ID
ORDER BY TOTAL_SALES DESC, p.PRODUCT_ID
LV.4 식품분류별 가장 비싼 식품의 정보 조회하기(정답률 : 80%) 🌟🌟🌟🌟🌟 서브쿼리!
SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE (PRICE, CATEGORY) IN (
SELECT MAX(PRICE), CATEGORY
FROM FOOD_PRODUCT
GROUP BY CATEGORY
)
AND CATEGORY IN ('과자', '국', '김치', '식용유')
ORDER BY MAX_PRICE DESC;
SELECT CATEGORY,PRICE as MAX_PRICE, PRODUCT_NAME
from FOOD_PRODUCT
where price in (
select max(price)
from FOOD_PRODUCT
group by CATEGORY)
and CATEGORY In ('과자', '국', '김치','식용유')
order by MAX_PRICE desc
LV.3 없어진 기록 찾기(정답률 : 80%) 🌟🌟🌟 RIGHT OUTER JOIN!
B테이블에는 있고 A테이블에는 없는거 조회
SELECT o.ANIMAL_ID, o.NAME
FROM ANIMAL_INS i RIGHT OUTER JOIN ANIMAL_OUTS o
ON i.ANIMAL_ID = o.ANIMAL_ID
WHERE i.DATETIME IS NULL
SELECT category, price AS max_price, product_name
FROM food_product
WHERE (category,price) IN (
SELECT category, MAX(price) AS max_price
FROM food_product
WHERE category IN ('과자', '국', '김치', '식용유')
GROUP BY category
)
ORDER BY price DESC
SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
AND PRICE IN (SELECT MAX(PRICE) FROM FOOD_PRODUCT GROUP BY CATEGORY)
GROUP BY CATEGORY
ORDER BY MAX_PRICE DESC
참고 링크 :
'Database > 프로그래머스' 카테고리의 다른 글
프로그래머스 SQL 76문제 풀기 ( 정답률 높은 순 기준 6개 ) - 5 (1) | 2023.10.06 |
---|---|
프로그래머스 SQL 76문제 풀기 ( 정답률 높은 순 기준 20개 ) - 4 (1) | 2023.10.05 |
프로그래머스 SQL 76문제 풀기 ( 정답률 높은 순 기준 10개 ) - 2 (0) | 2023.09.30 |
프로그래머스 SQL 76문제 풀기 ( 정답률 높은 순 기준 20개 ) - 1 (0) | 2023.09.29 |