본문 바로가기

Algorithm/Programmers

(31)
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 동명 동물 수 찾기 문제 동물 보호소에 들어온 2) 동물 이름 중 3) 두 번 이상 쓰인 이름과 4) 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 1) 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요. 문제 풀이 먼저 이름이 없는 동물은 제외하기 위하여 WHERE 조건을 건다. 동물의 이름별로 조회하기 위하여 GROUP BY로 묶는다. 위의 결과를 통해 얻은 리스트 중 두 번 이상 쓰인 이름을 조회하기 위하여 count 함수로 HAVING 조건을 건다. 이름이 쓰인 횟수를 구하기 위하여 count 함수로 조회한다. 전체 코드 SELECT NAME, count(*) AS COUNT FROM ANIMAL_INS WHERE NAME IS NOT NULL GROUP BY NAME ..
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 고양이와 개는 몇 마리 있을까 문제 동물 보호소에 들어온 1) 동물 중 고양이와 개가 각각 2) 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요. 문제 풀이 동물 별로 조회하기 위하여 GROUP BY로 묶는다. 총 몇마리인지 구하기 위하여 count 함수로 조회한다. 전체 코드 SELECT ANIMAL_TYPE, count(*) FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY 1
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 저자 별 카테고리 별 매출액 집계하기 문제 1) 2022년 1월의 도서 판매 데이터를 기준으로 2) 저자 별, 카테고리 별 3) 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여, 4) 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해주세요. 문제 풀이 BOOK, BOOK_SALES, AUTHOR 테이블을 모두 JOIN한 후, 도서 판매 데이터를 기준으로 WHERE 조건을 건다. 저자 별, 카테고리 별로 조회하기 위하여 GROUP BY로 묶는다. BOOK_SALES 테이블의 판매량과 BOOK 테이블의 판매가를 곱한뒤, 총 매출액을 구하기 위해 s..
[프로그래머스] 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..