SELECT
b.BOOK_ID,
a.AUTHOR_NAME,
DATE_FORMAT(b.PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK b
INNER JOIN AUTHOR a ON b.AUTHOR_ID = a.AUTHOR_ID
WHERE b.CATEGORY = '경제'
ORDER BY b.PUBLISHED_DATE
WHERE - '경제' 카테고리에 속하는 도서들의
SELECT - 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 리스트를 출력
ORDER BY - 결과는 출판일을 기준으로 오름차순 정렬
SELECT p.PRODUCT_CODE, (s.SUM * p.PRICE) AS SALES
FROM PRODUCT p
INNER JOIN(
SELECT PRODUCT_ID, SUM(SALES_AMOUNT) AS SUM
FROM OFFLINE_SALE
GROUP BY PRODUCT_ID
) s ON s.PRODUCT_ID = p.PRODUCT_ID
ORDER BY SALES DESC, p.PRODUCT_CODE
FROM, INNER JOIN - PRODUCT 테이블과 OFFLINE_SALE 테이블에서
SELECT - 상품코드 별 매출액(판매가 * 판매량) 합계를 출력
ORDER BY- 결과는 매출액을 기준으로 내림차순 정렬, 매출액이 같다면 상품코드를 기준으로 오름차순 정렬
PRODUCT_ID를 기준으로 각 PRODUCT_ID의 판매 합계를 구하고
두 테이블을 PRODUCT_ID를 기준으로 join한 뒤
합계와 가격을 곱 연산(*)하여 SALES 컬럼을 생성했다
SELECT ai.NAME, ai.DATETIME
FROM ANIMAL_INS ai
LEFT JOIN ANIMAL_OUTS ao ON ai.ANIMAL_ID = ao.ANIMAL_ID
WHERE ao.DATETIME IS NULL
ORDER BY ai.DATETIME LIMIT 3
아직 입양을 못 간 동물 중,
WHERE - 가장 오래 보호소에 있었던
LIMIT - 동물 3마리의
SELECT - 이름과 보호 시작일을 조회
ORDER BY - 이때 결과는 보호 시작일 순으로
SELECT ai.ANIMAL_ID, ai.NAME
FROM ANIMAL_INS ai
LEFT JOIN ANIMAL_OUTS ao ON ai.ANIMAL_ID = ao.ANIMAL_ID
WHERE TIMEDIFF(ao.DATETIME, ai.DATETIME) < 0
ORDER BY ai.DATETIME
관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다.
WHERE - 보호 시작일보다 입양일이 더 빠른
SELECT - 동물의 아이디와 이름을 조회
ORDER BY - 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.
처음엔 DATEDIFF()
로 구현했는데 틀렸다고 하더라.
같은 날짜에 보호되었다가 입양되는 경우가 있을 수 있으므로
보다 정확한 TIMEDIFF()
를 써야 한다는 것을 알았다.
SELECT
ao.ANIMAL_ID,
ao.NAME
FROM ANIMAL_OUTS ao
LEFT JOIN ANIMAL_INS ai ON ai.ANIMAL_ID = ao.ANIMAL_ID
WHERE ai.DATETIME IS NULL
ORDER BY ao.ANIMAL_ID
천재지변으로 인해 일부 데이터가 유실되었습니다.
WHERE - 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의
SELECT - ID와 이름을
ORDER BY - ID 순으로 조회하는 SQL문을 작성해주세요.
문제를 제대로 읽지 않고 ANIMAL_INS
에 NAME이 있으면 ANIMAL_OUTS
에는 없을 것이라는 고정관념 때문에 다소 시간이 걸렸다.
입양 간 기록 테이블을 기준으로 보호된 기록 테이블을 LEFT JOIN하고
보호된 기록 테이블의 보호시작일이 NULL인 조건 하에
입양 간 기록 테이블의 id와 이름을 조회하도록 구현했다.
SELECT ai.ANIMAL_ID, ai.ANIMAL_TYPE, ai.NAME
FROM ANIMAL_INS ai
INNER JOIN ANIMAL_OUTS ao ON ai.ANIMAL_ID = ao.ANIMAL_ID
WHERE ai.SEX_UPON_INTAKE LIKE 'Intact%'
AND ao.SEX_UPON_OUTCOME NOT LIKE 'Intact%'
ORDER BY ai.ANIMAL_ID;
보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다.
WHERE - 보호소에 들어올 당시에는 중성화되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의
SELECT - 아이디와 생물 종, 이름을 조회하는
ORDER BY - 아이디 순으로 조회하는 SQL 문을 작성해주세요.