1. 상위 n개 레코드
https://school.programmers.co.kr/learn/courses/30/lessons/59405
Lv.1의 SQL 문제
출력 개수를 제한하기 위해서 LIMIT 을 사용해야 한다.
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1;
2. NULL 처리하기
https://school.programmers.co.kr/learn/courses/30/lessons/59410
Lv.2의 SQL 문제
이름이 없는 NULL인 동물은 IFNULL 함수를 사용해서 'No name'으로 출력한다.
- IFNULL(VAL1, VAL2) : VAL1이 null 이면 VAL2값 출력, null이 아니면 VAL1값 출력
이 때, MYSQL 에서는 IFNULL, MSSQL에서는 ISNULL, ORACLE에서는 NVL 이다.
SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name'), SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
3. 흉부외과 또는 일반외과 의사 목록 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/132203
Lv.1의 SQL 문제
DATE_FORMAT 함수를 사용해서 DATE 타입의 출력 형식을 지정할 수 있다.
- DATE_FORMAT(날짜, 형식) : 날짜를 지정한 형식으로 출력
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD IN ('CS', 'GS')
ORDER BY HIRE_YMD DESC, DR_NAME ASC;
4. 자동차 대여 기록에서 장기/단기 대여 구분하기
https://school.programmers.co.kr/learn/courses/30/lessons/151138
Lv.1의 SQL 문제
DATE_FORMAT 함수를 사용해서 START_DATE와 END_DATE의 출력 형식을 지정해준다.
두 날짜간의 차이를 계산해주는 DATEDIFF 함수를 사용해서 자동차 대여 기간을 구하고,
IF 함수로 '장기대여', '단기대여' 를 구분하여 REN_TYPE을 출력한다.
- DATEDIFF(end-date, start-date) : 두 날짜 간의 차이를 계산해서 출력
SELECT HISTORY_ID,
CAR_ID,
DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE,
DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE,
IF(DATEDIFF(END_DATE, START_DATE) + 1 >= 30, '장기 대여', '단기 대여') AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE LIKE '2022-09%'
ORDER BY HISTORY_ID DESC;
5. 조건에 부합하는 중고거래 댓글 조회하기
https://school.programmers.co.kr/learn/courses/30/lessons/164673
Lv.1의 SQL 문제
두 테이블을 INNER JOIN해서 2022년 10월에 작성된 게시글에 대한 정보를 출력한다.
SELECT B.TITLE,
B.BOARD_ID,
R.REPLY_ID,
R.WRITER_ID,
R.CONTENTS,
DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD B JOIN USED_GOODS_REPLY R
ON B.BOARD_ID = R.BOARD_ID
WHERE B.CREATED_DATE LIKE '2022-10%'
ORDER BY R.CREATED_DATE ASC, B.TITLE ASC;
6. 잡은 물고기 중 가장 큰 물고기의 길이 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/298515
Lv.1의 SQL 문제
CONCAT 함수를 사용하여 가장 큰 물고기의 길이(MAX(LENGTH))와 'cm'를 붙여서 출력한다.
- CONCAT(문자열1, 문자열2, 문자열3, ...) : 둘 이상의 문자열을 입력 순서대로 합쳐서 출력
SELECT CONCAT(MAX(LENGTH), 'cm') AS MAX_LENGTH
FROM FISH_INFO
7. 가격대 별 상품 개수 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/131530
Lv. 2의 SQL 문제
TRUNCATE 함수로 만원 단위의 가격대를 구한 후, 가격대별로 그룹화하여 상품 개수를 출력한다.
- TRUNCATE(숫자, 버릴 자릿수) : 숫자를 버릴 자릿수 이하로 버림. 버릴 자릿수를 반드시 입력해야 한다.
SELECT TRUNCATE(PRICE, -4) AS PRICE_GROUP, COUNT(*) AS PRODUCTS
FROM PRODUCT
GROUP BY TRUNCATE(PRICE, -4)
ORDER BY PRICE_GROUP;
'PS > SQL' 카테고리의 다른 글
[프로그래머스][SQL] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2024.06.18 |
---|---|
[프로그래머스][SQL] 조건에 부합하는 중고거래 상태 조회하기 (0) | 2024.06.18 |
[프로그래머스][SQL]업그레이드 할 수 없는 아이템 구하기 (0) | 2024.06.11 |
[프로그래머스][SQL] 조건에 맞는 사용자 정보 조회하기 (0) | 2024.06.10 |
[프로그래머스][SQL] 자동차 평균 대여 기간 구하기 (0) | 2024.06.09 |