
lv4. JOIN : 보호소에서 중성화한 동물
보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화(중성화를 거치지 않은 동물은 성별 및 중성화 여부에 Intact, 중성화를 거친 동물은 Spayed 또는 Neutered라고 표시되어있습니다.)되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요.
SELECT I.ANIMAL_ID, I.ANIMAL_TYPE, I.NAME
FROM ANIMAL_INS AS I
INNER JOIN ANIMAL_OUTS AS 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
lv4. GROUP BY : 입양 시각 구하기(2)
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
#내 코드
SELECT HOUR(DATETIME) AS 'HOUR', COUNT(*) AS 'COUNT'
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME)
#재귀 테이블 사용
#https://hyunmin1906.tistory.com/149
WITH RECURSIVE TIME
AS(SELECT 0 AS H UNION ALL SELECT H+1 FROM TIME WHERE H < 23)
SELECT H AS 'HOUR', COUNT(HOUR(DATETIME)) AS 'COUNT'
FROM TIME
LEFT JOIN ANIMAL_OUTS
ON (H=HOUR(DATETIME))
GROUP BY H
lv4. Summer/Winter Coding(2019) : 우유와 요거트가 담긴 장바구니
데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.
# 내 코드 -> 중복값 걸러줘야 함
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME IN ('Yogurt','Milk')
GROUP BY CART_ID
HAVING COUNT(CART_ID)>1
ORDER BY CART_ID
#'동시에 구입한'
SELECT A.CART_ID
FROM
(SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME = 'Milk') AS A,
(SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME = 'Yogurt') AS B
WHERE A.CART_ID = B.CART_ID
ORDER BY A.CART_ID
lv4. GROUP BY : 식품분류별 가장 비싼 식품의 정보 조회하기
FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
#이럴 때 SELF JOIN을 쓰는 거다...
SELECT F.CATEGORY, F.PRICE AS 'MAX_PRICE', F.PRODUCT_NAME
FROM FOOD_PRODUCT AS F
JOIN (
SELECT CATEGORY, MAX(PRICE) AS 'MAX'
FROM FOOD_PRODUCT
GROUP BY CATEGORY
) AS C
ON F.CATEGORY = C.CATEGORY
AND F.PRICE = C.MAX
WHERE F.CATEGORY IN ('과자', '국', '김치', '식용유')
ORDER BY F.PRICE DESC
lv4. JOIN : 5월 식품들의 총매출 조회하기
FOOD_PRODUCT와 FOOD_ORDER 테이블에서 생산일자가 2022년 5월인 식품들의 식품 ID, 식품 이름, 총매출을 조회하는 SQL문을 작성해주세요. 이때 결과는 총매출을 기준으로 내림차순 정렬해주시고 총매출이 같다면 식품 ID를 기준으로 오름차순 정렬해주세요.
SELECT P.PRODUCT_ID, P.PRODUCT_NAME,
SUM (P.PRICE * O.AMOUNT) AS TOTAL_SALES
FROM FOOD_PRODUCT AS P
JOIN FOOD_ORDER AS O
ON P.PRODUCT_ID = O.PRODUCT_ID
WHERE LEFT(O.PRODUCE_DATE,7) LIKE '2022-05'
GROUP BY P.PRODUCT_ID
ORDER BY TOTAL_SALES DESC, P.PRODUCT_ID