본문 바로가기

SQL/SQL test26

[프로그래머스] 주문량이 많은 아이스크림들 조회하기 문제 설명 문제 7월 아이스크림 총 주문량과 상반기의 아이스크림 총주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해 주세요. 풀이 7월의 맛 별 총 주문량과 상반기의 맛 별 총주문량을 더해야 한다 : 7월에는 출하번호가 맛 별로 여러 개일 수 있으니, 서브쿼리로 총주문량을 생성한다. 7월의 맛 & 총주문량이 담긴 테이블을 join 한다, 이때 키는 FLAVOR이다. 맛 별로 총주문량을 계산해야 하니, FLAVOR을 기준으로 그룹화하고, 정렬은 상반기 + 7월 주문량 합을 내림차순 한다. 상위 3개만 조회할 수 있게 LIMIT사용 select a.FLAVOR from FIRST_HALF a left join (select FLAVOR, sum(TOTAL_ORDER) as tot.. 2023. 10. 9.
[프로그래머스] 식품분류별 가장 비싼 식품의 정보 조회하기 문제 설명 다음은 식품의 정보를 담은 FOOD_PRODUCT 테이블입니다. FOOD_PRODUCT 테이블은 다음과 같으며 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품코드, 식품분류, 식품 가격을 의미합니다. 문제 FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요. 풀이 식품분류별로 (가격이 제일 비싼) 식품의 분류, 가격, 이름을 조회 : select 절에 CATEGORY, PRICE, PRODUCT_NAME gro.. 2023. 10. 9.
[프로그래머스] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 문제 설명 다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다. 문제 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해.. 2023. 10. 9.
[프로그래머스] 즐겨찾기가 가장 많은 식당 정보 출력하기 문제 REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요. 풀이 이 문제 풀이 순서는 '음식 종류별'로 가장 많은 '즐겨찾기 수'를 찾는 것이다. 그리고 이에 해당하는 식당의 정보를 가져와야 한다. where 절에서 서브쿼리를 사용하여 위의 조건을 설정할 수 있다. FOOD_TYPE 별로 FAVORITES의 최댓값을 구한다. 아래와 같은 결과가 나올 것이다. 위의 내용에 해당하는 사항을 기준으로 필터링할 것이기 때문에, where 절에 두 개 컬럼 조건을 걸어주는 것이다. 마지막으로, order by 로 정렬을 지정한다. SELECT FOOD_TYPE,.. 2023. 10. 7.
[프로그래머스] 조건에 맞는 사용자와 총 거래금액 조회하기 문제 USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총거래금액을 기준으로 오름차순 정렬해주세요. 풀이 이 문제에서 먼저 고려할 점은, '완료'된 중고거래와 '회원' 기준 총 거래액의 계산이다. 먼저, 완료된 중고거래만 필터링 하기 위해 where 절에 조건을 걸어준다. 그리고 회원 별로 총 거래액을 계산하기 위해 user_id 를 기준으로 Group by 하여, 총 거래액을 계산한다. 이때, 닉네임도 출력해야하므로, 고윳값이겠지만 max()를 사용해서 닉네임도 집계함수로 출력했다. 최종적으로 총 거래액 70만원이 넘어야하는데 이 조건은 group by .. 2023. 10. 6.
[프로그래머스] 오프라인/온라인 판매 데이터 통합하기 문제 ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요. OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요. 결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요. 풀이 이 문제의 핵심은 두 개 테이블을 UNION 하는 것이다. 조건에 맞게 온/오프라인 데이터를 필터링하고, 이를 union 한 후, 정렬 방식을 ORDER BY 로 지정하면 끝! 또한, 오프라인 데이터에서 USER_ID 는 Null 값으로 처리하라고 한 부.. 2023. 10. 4.
[프로그래머스] 조건에 부합하는 중고거래 댓글 조회하기 문제 USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성해 주세요. 결과는 댓글 작성일을 기준으로 오름차순 정렬해 주시고, 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬해 주세요. 풀이 1 DATE_FORMAT()은 많이 사용하니 알아두자. 특정 형식으로 날짜형을 출력하고 싶을 때 지정한다. 이 문제의 핵심은 JOIN 후, 2022년 10월에 해당하는 데이터만 추출하는 것인데 풀이 1과 풀이 2 두 가지 방법을 확인하자. 풀이 1에서는 단순히 날짜형 칼럼의 구간을 지정하는 것으로, BETWEEN을 사용했다. SELECT a.TITLE.. 2023. 10. 4.
[프로그래머스] 서울에 위치한 식당 목록 출력하기 문제는 프로그래머스 홈페이지에서 더 자세히 확인하실 수 있습니다. https://school.programmers.co.kr/learn/courses/30/lessons/131118 문제 REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요. 풀이 SELECT info.REST_ID, info.REST_NAME, info.FOOD_TYPE, info.FAVORITES, info.ADDRESS, round(.. 2023. 10. 4.
728x90