Search

[SQL] JOIN

Tags
Date
SELECT i.INGREDIENT_TYPE, SUM(f.TOTAL_ORDER) AS TOTAL_ORDER FROM FIRST_HALF AS f JOIN ICECREAM_INFO AS i ON f.FLAVOR = i.FLAVOR GROUP BY i.INGREDIENT_TYPE ORDER BY TOTAL_ORDER;
SQL
복사
PRODUCT 테이블과 OFFLINE_SALE 테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.
SELECT PRODUCT_CODE, SUM(p.PRICE * o.SALES_AMOUNT) as SALES FROM PRODUCT as p JOIN OFFLINE_SALE as o ON p.PRODUCT_ID = o.PRODUCT_ID GROUP BY PRODUCT_CODE ORDER BY SUM(p.PRICE * o.SALES_AMOUNT) DESC, PRODUCT_CODE ASC;
SQL
복사
'경제' 카테고리에 속하는 도서들의 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 출판일을 기준으로 오름차순 정렬해주세요.
SELECT BOOK_ID, AUTHOR_NAME, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') as PUBLISHED_DATE FROM BOOK as b JOIN AUTHOR as a ON a.AUTHOR_ID = b.AUTHOR_ID WHERE CATEGORY LIKE '%경제%' ORDER BY PUBLISHED_DATE ASC;
SQL
복사
관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.
SELECT i.ANIMAL_ID, i.NAME FROM ANIMAL_INS as i JOIN ANIMAL_OUTS as o ON i.ANIMAL_ID = o.ANIMAL_ID WHERE i.DATETIME > o.DATETIME ORDER BY i.DATETIME ASC;
SQL
복사
아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다.
SELECT i.NAME, i.DATETIME FROM ANIMAL_INS as i LEFT JOIN ANIMAL_OUTS as o ON i.ANIMAL_ID = o.ANIMAL_ID WHERE o.ANIMAL_ID is NULL ORDER BY i.DATETIME ASC LIMIT 3;
SQL
복사
LEFT JOIN을 해야하는 문제였습니다. 입양을 가지 못한 동물은 ANIMAL_OUTS 테이블에 없기 때문입니다. 만약 RIGHT JOIN을 하면 ANIMAL_OUTS 기준으로 테이블이 생성되어 NULL 값을 인지하지 못하게 됩니다.
MEMBER_PROFILE와 REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문을 작성해주세요. 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요.
SELECT A.MEMBER_NAME,B.REVIEW_TEXT,DATE_FORMAT(B.REVIEW_DATE, "%Y-%m-%d") AS REVIEW_DATE from MEMBER_PROFILE A join REST_REVIEW B on A.MEMBER_ID = B.MEMBER_ID WHERE A.MEMBER_ID = (SELECT MEMBER_ID FROM REST_REVIEW GROUP BY MEMBER_ID ORDER BY COUNT(*) DESC LIMIT 1) order by REVIEW_DATE asc, REVIEW_TEXT
SQL
복사
핵심 포인트는 리뷰를 가장 많이 작성한 회원의 리뷰들입니다.
따라서 회원 아이디를 구하고 해당 아이디를 통해 리뷰들을 조회하는 것이 포인트라고 할 수 있습니다.
보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요.
중성화를 거치지 않은 동물은 성별 및 중성화 여부에 Intact, 중성화를 거친 동물은 Spayed 또는 Neutered라고 표시되어있습니다. 
SELECT i.ANIMAL_ID, i.ANIMAL_TYPE, i.NAME FROM ANIMAL_INS i JOIN ANIMAL_OUTS o ON i.ANIMAL_ID = o.ANIMAL_ID WHERE i.SEX_UPON_INTAKE LIKE 'Intact%' AND (o.SEX_UPON_OUTCOME LIKE 'Spayed%' OR o.SEX_UPON_OUTCOME LIKE 'Neutered%') ORDER BY i.ANIMAL_ID;
SQL
복사
LIKE 키워드를 사용하여 해결하면 되는 문제였습니다.