FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성해주세요. 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 결과는 창고 ID를 기준으로 오름차순 정렬해주세요.
SELECT
WAREHOUSE_ID,
WAREHOUSE_NAME,
ADDRESS,
CASE WHEN FREEZER_YN IS NULL THEN 'N'
ELSE FREEZER_YN END AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '%경기도%'
ORDER BY WAREHOUSE_ID ASC
Case When 구문을 통해 Null 대체 값을 지정해주어야하는 문제였다.
또한 Null처리함수 IFNULL 을 사용할 수도 있다.
SELECT IFNULL(FREEZER_YN, "N") # 해당 컬럼이 NULL 일 경우 문자열 N으로 표기
하지만 INFULL 함수는 MYSQL에서만 사용이 가능하다
모든 DBMS에서 사용할 수 있는 COALESCE 함수를 기억해두자
SELECT COALESCE(FREEZER_YN, 'N') # 해당 컬럼이 NULL 일 경우 문자열 N으로 표기
ANIMAL_INS 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜를 조회하는 SQL문을 작성해주세요. 이때 결과는 아이디 순으로 조회해야 합니다.
날짜 컬럼은 시각(시-분-초)을 제외한 날짜(년-월-일)만 보여주세요
SELECT
ANIMAL_ID,
NAME,
DATE_FORMAT(DATETIME, '%Y-%m-%d') AS '날짜'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
;
'''
SELECT
ANIMAL_ID,
NAME,
SUBSTR(DATETIME, 1, 10) AS '날짜'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
;
'''
두 가지 방법으로 풀어보았다.
1) DATE_FROMAT 함수를 이용하여 날짜 형식 변환
2) SUBSTR 함수를 이용하여 앞에서부터 지정한 문자열 추출
DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.
SELECT
DR_NAME,
DR_ID,
MCDP_CD,
DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD # 문제에서 제시한 조건(날짜형식)을 위해 DATE_FORMAT 함수 사용
FROM DOCTOR
WHERE MCDP_CD IN ('CS', 'GS')
ORDER BY HIRE_YMD DESC, DR_NAME ASC
문제를 끝까지 읽는 습관을 들여야겠다..
날짜형식 맞춤 조건을 보지 못해서 바로잡는데 오래걸렸다
FFOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.
SELECT *
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1
'''
SELECT *
FROM FOOD_PRODUCT
WHERE PRICE =
(SELECT
MAX(PRICE)
FROM FOOD_PRODUCT
)
'''
처음엔 '너무 쉽다' 하면서 첫 번째 쿼리(가격 내림차 순 & LIMIT 활용) 으로 풀었다.
이후 1분 정도 다른 방법을 고민하다가 중첩 서브쿼리를 사용해 풀어보았다.