
12세 이하인 여자 환자 목록 출력하기
코드
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD='W'
ORDER BY AGE DESC, PT_NAME ASC;
원본 테이블

코드
SELECT HOUR(DATETIME) HOUR, COUNT(ANIMAL_ID) COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR
HAVING HOUR >= 9 AND HOUR < 20
ORDER BY HOUR;
인기있는 아이스크림
코드
SELECT FLAVOR
FROM FIRST_HALF
ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID ASC;
진료과별 총 예약 횟수 출력하기
코드
SELECT MCDP_CD AS 진료과코드, COUNT(MCDP_CD) AS 5월예약건수
FROM APPOINTMENT
WHERE YEAR(APNT_YMD) = 2022 AND MONTH(APNT_YMD) = 5
GROUP BY MCDP_CD
ORDER BY 5월예약건수 ASC, 진료과코드 ASC;
오랜 기간 보호한 동물(1)
코드
SELECT I.NAME, I.DATETIME
FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NULL
ORDER BY I.DATETIME
LIMIT 3;
코드설명
- FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID: ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블을 LEFT JOIN으로 연결한다. 이는 ANIMAL_INS 테이블의 모든 레코드를 포함하고, ANIMAL_OUTS 테이블과 연결할 수 있는 레코드는 해당 레코드와 연결하여 결과를 반환한다. 두 테이블은 ANIMAL_ID 컬럼을 기준으로 연결된다.
- WHERE O.ANIMAL_ID IS NULL: LEFT JOIN으로 인해 ANIMAL_INS 테이블에 있는 레코드 중 ANIMAL_OUTS 테이블과 연결할 수 없는 레코드가 있을 수 있다. 이 조건은 ANIMAL_OUTS 테이블에 연결되지 않은 레코드만을 선택한다. 즉, 보호소를 떠나지 않은 동물들을 조회한다.
오답코드
SELECT I.NAME, I.DATETIME
FROM ANIMAL_INS I, ANIMAL_OUTS O
WHERE I.NAME = O.NAME
ORDER BY I.DATETIME;
있었는데요 없었습니다
코드
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.DATETIME > O.DATETIME
ORDER BY I.DATETIME ASC;
자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기
코드
SELECT CAR_TYPE, COUNT(CAR_TYPE) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE ASC;
상품 별 오프라인 매출 구하기
코드
SELECT P.PRODUCT_CODE, SUM(P.PRICE * S.SALES_AMOUNT) AS SALES
FROM PRODUCT P LEFT JOIN OFFLINE_SALE S ON P.PRODUCT_ID = S.PRODUCT_ID
GROUP BY P.PRODUCT_CODE
ORDER BY SALES DESC, P.PRODUCT_CODE ASC;
오랜 기간 보호한 동물(2)
코드
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID=O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NOT NULL
ORDER BY (O.DATETIME-I.DATETIME) DESC
LIMIT 2;
보호소에서 중성화한 동물
코드
SELECT I.ANIMAL_ID, I.ANIMAL_TYPE, I.NAME
FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE (I.SEX_UPON_INTAKE = 'Intact Male' AND O.SEX_UPON_OUTCOME = 'Neutered Male') OR (I.SEX_UPON_INTAKE = 'Intact Female' AND O.SEX_UPON_OUTCOME = 'Spayed Female')
ORDER BY I.ANIMAL_ID;
카테고리 별 도서 판매량 집계하기
코드
SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALES
FROM BOOK B LEFT JOIN BOOK_SALES S ON B.BOOK_ID = S.BOOK_ID
WHERE YEAR(SALES_DATE) = 2022 AND MONTH(SALES_DATE) = 1
GROUP BY CATEGORY
ORDER BY B.CATEGORY ASC;
조건에 맞는 도서 저자 리스트 출력하기
코드
SELECT B.BOOK_ID, A.AUTHOR_NAME, DATE_FORMAT(B.PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK B LEFT JOIN AUTHOR A ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE CATEGORY='경제'
ORDER BY B.PUBLISHED_DATE ASC;
루시와 엘라 찾기
코드
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME = 'Lucy' OR NAME = 'Ella' OR NAME = 'Pickle' OR NAME = 'Rogan' OR NAME = 'Sabrina' OR NAME = 'Mitty'
ORDER BY ANIMAL_ID;
성분으로 구분한 아이스크림 총 주문량
코드
SELECT I.INGREDIENT_TYPE, SUM(F.TOTAL_ORDER) AS TOTAL_ORDER
FROM FIRST_HALF F LEFT JOIN ICECREAM_INFO I ON F.FLAVOR=I.FLAVOR
GROUP BY I.INGREDIENT_TYPE
ORDER BY TOTAL_ORDER ASC;
조건별로 분류하여 주문상태 출력하기
코드
SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE, CASE WHEN OUT_DATE <= '2022-05-01' THEN '출고완료'
WHEN OUT_DATE IS NULL THEN '출고미정'
ELSE '출고대기' END AS 출고여부
FROM FOOD_ORDER
ORDER BY ORDER_ID ASC;