
본 캠프 9일 차!
[TODAY'S SQL 코드카타]
1) 첫 번째 문제는 '최솟값 구하기'
Q. 동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
👉조회 시 보여야 하는 데이터 : 동물 보호소에 들어온 날짜
✔️테이블명 : ANIMAL_INS
✔️조건 : 가장 오래된 날짜만 조회(ORDER BY, LIMIT)
SELECT DATETIME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1
2) 두번째 문제는 '진료과별 총 예약 횟수 출력하기'
Q. APPOINTMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요.
👉조회 시 보여야 하는 데이터 : 진료과코트 별 환자 수(GROUP BY, COUNT)
✔️조건 : 22년 5월 예약한 환자 (WHERE ~ LIKE )
✔️조건2: 컬럼명 지정(진료과코드, 5월예약건수)
✔️조건3: 환자 수 기준 오름차순, 진료과코드 기준 오름차순(GROUP BY)
작성한 쿼리문은
SELECT MCDP_CD '진료과코드',
COUNT(PT_NO) '5월예약건수'
FROM APPOINTMENT
WHERE APNT_YMD LIKE '2022-05%'
GROUP BY 1
ORDER BY 2, 1
세 번째 문제는 '5월 식품들의 총매출 조회하기'
Q. FOOD_PRODUCT와 FOOD_ORDER 테이블에서 생산일자가 2022년 5월인 식품들의 식품 ID, 식품 이름, 총매출을 조회하는 SQL문을 작성해주세요. 이때 결과는 총매출을 기준으로 내림차순 정렬해주시고 총매출이 같다면 식품 ID를 기준으로 오름차순 정렬해주세요.
👉조회 시 보여야 하는 데이터 : 식품 ID, 식품 이름, 총 매출(PRICE * AMOUNT)
✔️조건 : 생산일자가 22년 5월 (WHERE ~ LIKE)
✔️조건2 : 총매출 기준 내림차순, 식품 ID 기준 오름차순(ORDER BY ~ DESC, ~ ASC)
나의 최종 쿼리문은
SELECT FP.PRODUCT_ID,
FP.PRODUCT_NAME,
SUM(FP.PRICE*FO.AMOUNT) AS TOTAL_PRICE
FROM FOOD_PRODUCT FP LEFT JOIN FOOD_ORDER FO ON FP.PRODUCT_ID=FO.PRODUCT_ID
WHERE FO.PRODUCE_DATE LIKE '2022-05%'
GROUP BY 1
ORDER BY 3 DESC, 1 ASC
네 번째 문제는 '고양이와 개는 몇 마리 있을까'
Q. 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.
👉조회 시 보여야 하는 데이터 : 동물 수 (COUNT)
✔️조건 : 고양이, 강아지 각각(GROUP BY)
✔️조건2 : 고양이, 개 순으로 조회
최종 쿼리문은
SELECT ANIMAL_TYPE,
COUNT(DISTINCT ANIMAL_ID)
FROM ANIMAL_INS
GROUP BY 1
다섯 번째 문제는 '가격대 별 상품 개수 구하기'
Q. PRODUCT 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL 문을 작성해주세요. 이때 컬럼명은 각각 컬럼명은 PRICE_GROUP, PRODUCTS로 지정해주시고 가격대 정보는 각 구간의 최소금액(10,000원 이상 ~ 20,000 미만인 구간인 경우 10,000)으로 표시해주세요. 결과는 가격대를 기준으로 오름차순 정렬해주세요.
👉조회 시 보여야 하는 데이터 : 가격대 별 상품 개수
✔️조건 : 컬럼명 지정(PRICE_GROUP, PRODUCTS)
✔️조건2 : 가격대는 각 구간의 최소 금액으로 표시 (DIV, GROUP BY)
(10,000이상 ~ 20,000 미만의 구간인 경우 -> 10,000)
✔️조건3 : 가격대 기준 오름차순 정렬(ORDER BY )
최종 쿼리문은
SELECT 10000*(PRICE DIV 10000) AS PRICE_GROUP,
COUNT(1) PRODUCTS
FROM PRODUCT
GROUP BY 1
ORDER BY 1