[Programmers] 입양 시각 구하기(1)

김두현·2023년 3월 16일
1

SQL

목록 보기
13/20
post-thumbnail

🔒문제 url

https://school.programmers.co.kr/learn/courses/30/lessons/59412


❗️배운 것

날짜 및 시간 데이터에서 값 추출하기

문제에서의 DATETIME과같이 날짜 혹은 시간을 나타낸 데이터에서는 다음과같은 함수를 사용할 수 있다.

  • YEAR() YEAR(2023-03-16) \to 2023
  • MONTH()
  • DAY()
  • HOUR() HOUR(17:31:30) \to 17
  • MINUTE()
  • SECOND()

쿼리의 실행 순서

SELECT HOUR(DATETIME) AS "HOUR"
FROM ANIMAL_OUTS
WHERE 9 <= HOUR

위 쿼리는 WHERE절에서 오류를 발생시킨다.
HOUR로 별칭을 정해주었음에도 어째서 오류가 발생하는가?

  • WHERE절은 SELECT보다 먼저 수행되기 때문에, 별칭이 확정되지 않은 시점이므로 오류를 야기한다.

🔑코드

/* HAVING 사용한 풀이 */
SELECT
-- 시간 정보에서 시간을 추출하여 선택하고, 별칭은 "HOUR"로 하라.
HOUR(DATETIME) AS "HOUR",
-- 분류 기준에 따라 갯수를 세어 선택하라. 별칭은 "COUNT"로 하라.
COUNT(*) AS "COUNT"
-- 아래 table에서
FROM ANIMAL_OUTS
-- HOUR을 기준으로 분류하라
GROUP BY HOUR
-- HOUR은 9시에서 19시까지에 속해야한다.
HAVING 9 <= HOUR AND HOUR <= 19
-- HOUR을 기준으로 오름차순 정렬하라.
ORDER BY HOUR ASC

/* WHERE 사용한 풀이 */
SELECT
HOUR(DATETIME) AS "HOUR",
COUNT(*) AS "COUNT"
FROM ANIMAL_OUTS
WHERE 9 <= HOUR(DATETIME) AND HOUR(DATETIME) <= 19
GROUP BY HOUR
ORDER BY HOUR ASC

💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

0개의 댓글