Voyage 99 SQL 프로그래머 온보딩 잠금 해제


Voyage 99 SQL 프로그래머 온보딩 잠금 해제 1
갸아아아아아아

1. 렌트카 문서에서 장기 렌탈과 단기 렌탈 구분

새로운 문법

datediff(종료일, 시작일) => 날짜 계산

날짜 차이의 약어 아닌가요?

더보기

SELECT  HISTORY_ID, CAR_ID, 
        SUBSTRING(START_DATE, 1 ,10) AS START_DATE, 
        SUBSTRING(END_DATE, 1, 10) AS END_DATE,
        (CASE WHEN DATEDIFF( END_DATE, START_DATE) +1 >= 30 THEN '장기 대여'
        ELSE '단기 대여' END) AS RENT_TYPE
        FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
WHERE START_DATE LIKE '2022-09%'
ORDER BY HISTORY_ID DESC

2. 조건에 맞는 중고 거래 댓글 찾기

더보기

SELECT B.TITLE, B.BOARD_ID, R.REPLY_ID, R.WRITER_ID, R.CONTENTS, 
        SUBSTRING(R.CREATED_DATE, 1, 10) AS CREATED_DATE
        FROM USED_GOODS_BOARD B
INNER JOIN USED_GOODS_REPLY R
ON B.BOARD_ID = R.BOARD_ID
WHERE B.CREATED_DATE LIKE '2022-10%'
ORDER BY R.CREATED_DATE, B.TITLE

3. 입양시기 찾기 (1)

먼저 삽입할 하위 쿼리를 만듭니다.

– 조건 : 오전 9시부터 오후 8시 사이에 발생한 건수는?

– Hour(시간이 있는 필드): 시간만 뺍니다.
시간 기능 사용

from 을 사용하여 하위 쿼리를 작성하는 경우 from 외부에서 사용할 수 있도록 별칭을 사용해야 합니다.

더보기

SELECT * FROM (
SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS COUNT FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME)
) a
WHERE a.HOUR >= 9 AND a.HOUR < 20

SELECT HOUR(DATETIME) AS H, COUNT(HOUR(DATETIME)) FROM ANIMAL_OUTS
WHERE DATE_FORMAT(DATETIME,'%H') BETWEEN '09' AND '19'
GROUP BY H
ORDER BY H

4. 가격대별로 제품 수 결정

분할 div 사용(선택 내)

– div로 몫 찾기

– 공유 * 10000: 10,000원 ​​이상 단위만 남음

– 별칭 price_group 생성

그룹화

정렬 기준

계산하기()

또는 DIV 대신

TRUNCATE(fieldname, 원하는 만큼 자르기)를 사용할 수 있습니다.

자세한 내용은 여기

https://soft.plusblog.co.kr/6

(MySQL) 반올림 및 반올림 함수 – ROUND(), TRUNCATE()

쿼리를 작성할 때 숫자 데이터로 할 일이 많고 실수를 다룰 때 가장 일반적으로 사용되는 함수는 반올림과 버리기입니다.
MySQL은 이 기능을 제공하기 위해 ROUND() 및 TRUNCATE() 함수를 제공합니다.

soft.plusblog.co.kr

더보기

SELECT (PRICE DIV 10000)*10000 AS PRICE_GROUP, COUNT(*) AS PRODUCTS FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP

SELECT TRUNCATE(PRICE, -4) AS PRICE_GROUP, COUNT(*) AS PRODUCTS FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP

5. 장기간 보호받는 동물들 (1)

표 ANIMAL_INST = 입양 중인 동물

표 ANIMAL_OUTS = 입양된 동물

입양되지 않은 장기 보호 동물 3마리 찾기

=> LEFT JOIN 사용

더보기

select ai.name, ai.datetime from animal_ins ai
left join animal_outs ao on ai.animal_id = ao.animal_id
where ao.animal_id is null
order by ai.datetime
limit 3