SQL

SQL 코드카타 오답: DATE_FORMAT | LEFT | HOUR

sawo11 2024. 11. 28. 10:17

[DATETIME에서 DATE로 형 변환]

ANIMAL_INS 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜를 조회하는 SQL문을 작성해주세요. 이때 결과는 아이디 순으로 조회해야 합니다.

# DATE_FORMAT
SELECT ANIMAL_ID, 
       NAME,
       DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

 

[카테고리 별 상품 개수 구하기]

PRODUCT 테이블에서 상품 카테고리 코드(PRODUCT_CODE 앞 2자리) 별 상품 개수를 출력하는 SQL문을 작성해주세요. 결과는 상품 카테고리 코드를 기준으로 오름차순 정렬해주세요.

# LEFT( , )
SELECT LEFT(PRODUCT_CODE, 2) CATEGORY_CODE,
    COUNT(PRODUCT_ID) PRODUCTS
FROM PRODUCT
GROUP BY LEFT(PRODUCT_CODE, 2)
ORDER BY PRODUCT_CODE;

 

[입양 시각 구하기]

보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.

# HOUR
SELECT HOUR(DATETIME) HOUR,
    COUNT(*) COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) BETWEEN 9 AND 20
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME);

 

[진료과별 총 예약 횟수 출력하기]

APPOINTMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요.

# 틀리진 않았지마 헷갈린 문제
SELECT MCDP_CD '진료과코드',
    COUNT(APNT_NO) '5월예약건수'
FROM APPOINTMENT
WHERE APNT_YMD BETWEEN '2022-05-01' AND '2022-06-01'
GROUP BY MCDP_CD
ORDER BY COUNT(APNT_NO),
    MCDP_CD;

 

[12세 이하인 여자 환자 목록 출력하기]

PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.

# 조건을 잘 파악할 것
# CASE WHEN 위치 확인
SELECT PT_NAME,
    PT_NO,
    GEND_CD,
    AGE,
    CASE WHEN TLNO IS NULL THEN 'NONE'
        ELSE TLNO
        END TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC,
         PT_NAME;

 

[자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기]

# OPTIONS LIKE를 OR을 쓸 때마다 반복해야함 
# GROUP BY를 하지 않으면 틀린 결과 출력
SELECT CAR_TYPE,
    COUNT(*) CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%통풍시트%' 
    OR OPTIONS LIKE '%열선시트%' 
    OR OPTIONS LIKE '%가죽시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE;

 

[오랜기간 보호한 동물(1)]

# 조인 후 출력 시 어떤 테이블에서 가져올 것인지 명시
# 입양간 동물 테이블의 ID가 NULL인 이름을 선택해야함
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;