문제가 원하는 것을 정리하면 1. 자동차 종류가 "세단"이어야 하며 2. 10월에 대여를 시작한 기록이 있는차 3. 자동차 ID 중복을 제거한다. 위 테이블을 보고 하나씩 해결하도록 하겠다. 먼저 1. 자동차 종류가 "세단"을 찾는 sql은 WHERE절을 사용하면 찾을 수 있을 것이다. WHERE A.CAR_TYPE = '세단' 그다음 2. 10월에 대여를 시작한 기록이 있는차를 알기 위해서는 역시 WHERE절을 사용하면 되는데 먼저 서로다른 테이블을 같이 조회해야 하기 때문에 JOIN을 사용하는데 두테이블에 데이터가 모두 존재하는 데이터 임으로 INNER JOIN을 사용하여 조회 하며, 두 테이블의 공유값인 CAR_ID를 사용하여 JOIN하면 된다. FROM CAR_RENTAL_COMPANY_CAR A..
문제에서 원하는 것은 1. 음식종류별로 즐겨찾기가 가장 많은 식당의 정보 2. 음식 종류를 기준으로 내림차순 정렬 위 테이블을 보고 문제를 해결해 보도록 하겠다. 먼저 1. 음식종류별로 즐겨찾기가 가장 많은 식당의 정보를 얻기 위해서는 우선적으로 음식 종류별로 그룹화를 해야 할 것이다. GROUP BY FOOD_TYPE GROUP BY절을 이용하여 그룹화를 하고, 이제 이 그룹 속에서 즐겨찾기가 가장 많은 식당의 정보를 얻으려면 MAX를 사용하여 그룹 내에서 가장 즐겨 찾기가 많은 데이터를 찾을 수 있고. 이 데이터를 가지고 즐겨찾기가 가장 큰 식당의 정보를 알기 위해서는 현재 sql문을 서브쿼로 사용하면 된다. SELECT MAX(FAVORITES) FAVORITES, FOOD_TYPE FROM RES..
문제가 원하는 것은 1. 중고 거래 금액이 총 70만원을 넘어야 하며 2. 총 거래 금액으로 오름차순 정렬을 해야 한다. 위 테이블을 보고 차근차근 sql을 만들어 보겠다 우선 1. 중고 거래 금액이 총 70만원을 넘어야 함으로 각 회원들의 중고 거래 금액을 알아야 하며, 중고 거래 상태가 완료된 행들의 금액만을 합하여야 한다. 따라서 이를 sql로 만들면 아래와 같이 된다. FROM USED_GOODS_BOARD A INNER JOIN USED_GOODS_USER B ON A.WRITER_ID = B.USER_ID WHERE A.STATUS = 'DONE' GROUP BY B.USER_ID HAVING SUM(A.PRICE) >= 700000 위의 sql을 보면 두 개의 테이블의 정보가 필요함으로 JO..
문제에서 원하는 것은 1. 5월 1일을 기준으로 출고여부가 달라져야하며 2. 주문 ID를 기준으로 정렬을 해야한다. 테이블을 보고 하나씩 sql을 작성하면 우선 1. 5월 1일을 기준으로 출고여부 sql은 CASE WHEN (OUT_DATE '2022-05-01') THEN '출고대기' ELSE '출고미정' END 출고여부 CASE문을 가지고 작성하였다. "WHEN 조건 THEN 출력값" 으로 작성하면 됨으로 위 sql을 보면 5월 1일을 넘지 않으면 "출고완료", 넘으면 "출고대기", 출고 예정이 없으면 "출고미정"을 출력하도록 작성을 하였다. 마지막으로 2. 주문_ID로 정렬을 하는 sql은 ORDER BY ORDER_ID ASC; 이므로 sql을 다 합치면 SELECT ORDER_ID, PRODUC..
위 문제의 요점은 1. 2022년 1월의 판매량만을 합산하여야 하고 2. 카테고리로 그룹을 묶으며 3. 카테고리명으로 오름차순 정렬을 한다. 위 테이블을 보고 하나씩 해결해 보면 일단 1. 2022년 1월의 판매량 만을 합산한다를 sql로 바꿔 보면 SELECT A.CATEGORY, SUM(B.SALES) TOTAL_SALES FROM BOOK A INNER JOIN BOOK_SALES B ON A.BOOK_ID = B.BOOK_ID WHERE B.SALES_DATE BETWEEN "2022-01-01" and "2022-01-31" SELECT절에 SUM을 이용하여 판매량의 합산을 구하며, WHERE절의 BETWEEN을 이용하여 2022년 1월의 판매량 만을 조회한다. 또한 이 값들은 서로 다른 테이블..
이 문제에서 원하는 것은 1. 입양을 간 동물이여야 하고 2. 보호기간이 가장 길었던 동물이어야 하고 3. 2마리만 조회해야 한다. ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블을 보고 1,2,3번을 차근차근 sql로 바꾸어 보겠다. 일단 1. 입양을 간 동물 이란 소리는 ANIMAL_OUTS에 데이터가 존재해야 한다는 소리이고, 이를 위해 INNER JOIN을 사용하여 데이터를 조회하도록 하겠다. FROM ANIMAL_INS A INNER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID 조건은 두 테이블이 공통적으로 가지고 있는 아이디를 조건으로 주었다. 그 다음 2번은 가장 보호소에 오래 있어야 한다는 조건은 보호소에 들어오고 입양을 나간 시점이 가장 ..
문제에서 원하는 것은 1. 입양일이 보호 시작일 보다 빨라야 하며 2. 보호 시작일 순으로 조회되어야 한다. 이제 두 테이블을 보며 1번부터 차근차근 sql구문으로 바꾸도록 하겠다. 1. 입양일이 보호일 보다 빨라야 한다는 것은 일단 두 테이블을 JOIN 해야 하며 두 테이블의 데이터가 모두 존재해야 입양이 된 동물이기 때문에 JOIN 중에서 INNER JOIN을 사용하면 된다. 또한 WHERE절을 이용하여 입양일이 보호 시작일 보다 작으면 입양일이 더 오래된 것을 보여줄 것이다. 따라서 이를 sql로 바꾸면 FROM ANIMAL_INS A INNER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID WHERE A.DATETIME > B.DATETIME 이런 식의 sq..
문제에서 원하는 것은 1. 입양을 아직 못 간 동물이어야 하고 2. 가장 오래 보호소에 있던 동물이어야 하며 3. 3마리만 조회가 되어야 한다. 따라서 1번부터 확인 차근차근 풀어가 보도록 하겠다. ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블을 보고 1,2,3번을 차근차근 sql로 바꾸어 보겠다. 일단 1. 입양을 못간 동물이란 것은 ANIMAL_INS 테이블의 보호 시작일은 존재하는 동물이어야 하며, ANIMAL_OUTS 테이블에서 입양일이 존재하지 않으면 입양을 못 가고 아직 보호소에 남아 있다는 뜻으로 해석된다. 따라서 두개의 테이블을 JOIN 해야 하며 이때 ANIMAL_INS 테이블을 기준으로 LEFT JOIN을 하여 ANIMAL_INS 테이블에 데이터가 존재하지만 ANIMAL_OU..