본문 바로가기

전체 글

(168)
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 문제 CAR_RENTAL_COMPANY_CAR 테이블에서 1) '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 2) 자동차 종류 별로 3) 몇 대인지 출력하는 SQL문을 작성해주세요. 이때 자동차 수에 대한 컬럼명은 CARS로 지정하고, 결과는 자동차 종류를 기준으로 오름차순 정렬해주세요. 문제 풀이 여러 옵션들 중 하나 이상이 포함되었는지 확인하기 위하여 REGEXP_LIKE 구문으로 WHERE 조건을 건다. 자동차 종류 별로 조회하기 위하여 GROUP BY로 묶는다. 위의 조건에 해당하는 자동차가 몇 대인지 count 함수로 조회한다. - REGEXP_LIKE 구문을 사용한 이유 : 처음엔 아래 주석한 코드처럼 사용하려 했지만, 되지 않았고.. 결국 LIKE를 여러개 ..
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 성분으로 구분한 아이스크림 총 주문량 문제 상반기 동안 각 아이스크림 성분 타입과 1) 성분 타입에 대한 2) 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회하는 SQL 문을 작성해주세요. 이때 총주문량을 나타내는 컬럼명은 TOTAL_ORDER로 지정해주세요. 문제 풀이 성분 타입 컬럼이 있는 ICECREAM과 총 주문량 컬럼이 있는 FIRST_HALF 테이블을 JOIN하여, 성분 타입에 대한 정보를 조회하기 위하여 GROUP BY로 묶는다. 위의 조건에 해당하는 총주문량을 sum 함수로 조회한다. 전체 코드 SELECT INGREDIENT_TYPE, sum(TOTAL_ORDER) AS TOTAL_ORDER FROM FIRST_HALF JOIN ICECREAM_INFO ON FIRST_HALF.FLAVOR = ICECREAM_INFO...
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 문제 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 1) 2022년 10월 16일에 2) 대여 중인 자동차인 경우 '대여중' 이라고 표시하고, 대여 중이지 않은 자동차인 경우 '대여 가능'을 표시하는 컬럼(컬럼명: AVAILABILITY)을 추가하여 자동차 ID와 AVAILABILITY 리스트를 출력하는 SQL문을 작성해주세요. 이때 반납 날짜가 2022년 10월 16일인 경우에도 '대여중'으로 표시해주시고 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요. 문제 풀이 '2022-10-16'이 포함되어 있는지 BETWEEN AND 구문으로 확인한다. (START_DATE
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 즐겨찾기가 가장 많은 식당 정보 출력하기 문제 REST_INFO 테이블에서 1) 음식종류별로 2) 즐겨찾기수가 가장 많은 식당의 3) 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요. 문제 풀이 음식종류별로 조회하기 위하여 GROUP BY로 묶는다. 즐겨찾기수가 가장 많은 식당을 구하기 위하여 max 함수로 조회한다. 음식종류별 즐겨찾기수가 가장 많은 식당만 뽑아낸 서브쿼리와 기존 쿼리를 JOIN하여 ID, 식당 이름을 조회한다. 전체 코드 SELECT a.FOOD_TYPE, a.REST_ID, a.REST_NAME, a.FAVORITES FROM REST_INFO a JOIN ( SELECT FOOD_TYPE, max(FAVORITES) AS FAVORITE..
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 카테고리 별 도서 판매량 집계하기 문제 1) 2022년 1월의 2) 카테고리 별 3) 도서 판매량을 합산하고, 카테고리(CATEGORY), 총 판매량(TOTAL_SALES) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 카테고리명을 기준으로 오름차순 정렬해주세요. 문제 풀이 카테고리 컬럼이 있는 BOOK과 판매량 컬럼이 있는 BOOK_SALES 테이블을 JOIN하여, 1월에 대해서만 WHERE 조건을 건다. 카테고리 별로 조회하기 위하여 GROUP BY로 묶는다. 위의 조건에 해당하는 총 도서 판매량을 sum 함수로 조회한다. 전체 코드 SELECT CATEGORY, sum(SALES) AS TOTAL_SALES FROM BOOK JOIN BOOK_SALES ON BOOK.BOOK_ID = BOOK_SALES.BOOK_ID WHERE..
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 문제 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 1) 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 2) 총 대여 횟수가 5회 이상인 자동차들에 대해서 3) 해당 기간 동안의 4) 월별 자동차 ID 별 5) 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해주세요. 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요. 문제 풀이 대여 시작일을 기준으로 WHERE 조건을 건다. 위 해당 기간 동안의 자동차별 총 대여 횟수를 알기 위해 GROUP BY로 묶어주고, 그 중 5회 이상인 자동차를 뽑기 위하여 HAVING 조건을 건다...
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 식품분류별 가장 비싼 식품의 정보 조회하기 문제 FOOD_PRODUCT 테이블에서 1) 식품분류별로 2) 가격이 제일 비싼 식품의 3) 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 4) 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요. 문제 풀이 식품분류별로 조회하기 위하여 GROUP BY로 묶는다. 가격이 가장 비싼 식품을 구하기 위하여 max 함수로 조회한다. 가격이 가장 비싼 식품의 분류, 가격만 뽑아낸 서브쿼리와 기존 쿼리를 JOIN하여 식품의 이름을 조회한다. 출력시킬 식품분류에 속해있는지 WHERE 조건을 통해 조회한다. 전체 코드 SELECT b.CATEGORY, b.MAX_PRICE, a.PRODUCT_NAME FROM FOOD_PRODU..
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 진료과별 총 예약 횟수 출력하기 문제 APPOINTMENT 테이블에서 1) 2022년 5월에 예약한 환자 수를 2) 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요. 문제 풀이 2022년 5월에 예약한 환자만 뽑기 위하여 WHERE절에 조건을 건다. 진료과코드 별로 조회하기 위하여 GROUP BY로 묶는다. 위의 조건에 해당하는 총 건수를 구하기 위하여 count 함수로 조회한다. 전체 코드 SELECT MCDP_CD AS "진료과코드", count(*) AS "5월예약건수" FROM APPOINTMENT WHERE TO_CHAR(APNT_..