728x90
https://programmers.co.kr/learn/courses/30/lessons/59412
입양 시각 구하기 (1)
정답 코드
SELECT HOUR(DATETIME), COUNT(DATETIME) FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) > 8 AND HOUR(DATETIME) < 20
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME);
HOUR()를 사용하면 날짜 시간에서 '시'에 해당하는 시간만 뽑아낼 수 있다.
이를 이용해서 시간이 9시~19시 사이인 것들을 group by로 그룹화 하여 count 하면 된다.
입양 시각 구하기 (2)
https://programmers.co.kr/learn/courses/30/lessons/59413
갑자기 난이도가 확 뛰었다.. 보니까 레벨 4였던...
가지고 있는 지식으로는 도저히 해결할 수 없어서 다른 사람들의 풀이는 많이 찾아봤고 그러다 SET이라는 개념을 알게 되었다.
MySQL에서 SET @변수명 = '값'; 은 SET 명령어에서만 대입 연산자로 인식하기 때문에
대입을 하려면 SET @변수명 := '값'; 으로 :=를 사용해야 한다.
SET은 꼭 뒤에 ;를 붙여야 한다!
정답 코드
SET @HOUR = -1 ;
SELECT (@HOUR := @HOUR+1) AS HOUR,
(SELECT COUNT(HOUR(DATETIME)) AS COUNT FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) = @HOUR) AS 'COUNT'
FROM ANIMAL_OUTS
WHERE @HOUR < 23
초기 변수값을 -1로 지정, 이후 1씩 더해가면서 SELECT 문 전체를 실행하고, 변수에 해당하는 COUNT값을 출력한다.
HOUR의 값은 0시부터 23시까지 출력 되어야 하므로 WHERE 조건을 추가하여 변수의 값을 조정하면 된다.
굉장히.. 낯설고 어려운 개념인 것 같다.. 이해하기도 어려웠고..
ㅠㅠ
728x90