목록분류 전체보기 (163)
꿈꾸는 개발자의 블로그
문제 천재지변으로 인해 일부 데이터가 유실되었습니다. 1) 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요. 문제 풀이 두 테이블을 JOIN 후, 보호소에 들어온 동물의 정보를 담은 ANIMAL_INS 테이블에 기록이 없는 동물을 찾기 위하여 WHERE 조건을 건다. (IS NULL로 데이터의 유무 확인) 전체 코드 SELECT b.ANIMAL_ID, b.NAME FROM ANIMAL_INS a RIGHT OUTER JOIN ANIMAL_OUTS b ON a.ANIMAL_ID = b.ANIMAL_ID WHERE a.ANIMAL_ID IS NULL ORDER BY 1
문제 1) FOOD_PRODUCT와 FOOD_ORDER 테이블에서 2) 생산일자가 2022년 5월인 식품들의 3) 식품 ID, 식품 이름, 총매출을 조회하는 SQL문을 작성해주세요. 이때 결과는 총매출을 기준으로 내림차순 정렬해주시고 총매출이 같다면 식품 ID를 기준으로 오름차순 정렬해주세요. 문제 풀이 FOOD_PRODUCT와 FOOD_ORDER 테이블을 JOIN 한다. 해당 날짜인 식품들만 조회하기 위하여 WHERE 조건을 건다. 위의 결과에서 식품 별 매출을 구하기 위하여 식품 ID와 이름을 GROUP BY로 묶고, 총 매출을 sum 함수로 조회한다. 전체 코드 SELECT a.PRODUCT_ID, a.PRODUCT_NAME, sum(AMOUNT * PRICE) AS TOTAL_SALES FROM ..
문제 1) 7월 아이스크림 총 주문량과 상반기의 아이스크림 2) 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요. 문제 풀이 테이블의 컬럼 수와 데이터 형식이 모두 일치하고, SHIPMENT_ID는 동일하지 않은 상태이기 때문에 두 테이블을 합치기 위하여 UNION ALL 연산을 사용한다. 상위 3개의 맛을 조회하기 위하여 GROUP BY로 묶어준 뒤, 총 주문량을 sum 함수로 구하여 정렬한다. 전체 코드 SELECT FLAVOR FROM ( SELECT FLAVOR FROM ( SELECT * FROM FIRST_HALF UNION ALL SELECT * FROM JULY ) GROUP BY FLAVOR ORDER BY sum(TOTAL_ORDER) DESC )..
문제 CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 2) 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 3) 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 2) 30일간의 4) 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬해주세요. 문제 풀이 이 문..
문제 MEMBER_PROFILE와 REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문을 작성해주세요. 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요. 문제 풀이 처음에는 GROUP BY를 두 번 사용하는 방법밖에 떠오르지 않았다. 그렇게 정답을 제출하고 나서 다른 사람의 풀이도 보게 되었는데, RANK를 이용한 풀이 방법이 있어서 같이 정리해보았다. HAVING 조건을 이용한 풀이 리뷰를 가장 많이 작성한 회원을 찾기 위하여 회원별 GROUP BY로 묶는다. (HAVING 서브쿼리) 그 중 리뷰의 개수를 알기 위하여 count 함수로 조회한..