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, 원하는 만큼 자르기)를 사용할 수 있습니다.
자세한 내용은 여기
(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