Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바
- 백준
- 1010 자바
- 백준 1764 자바
- 백준 10866 자바
- 10810 자바
- IAM Identity Center
- 자바 2164
- 2346 풍선 터뜨리기
- 자바 1003
- 자바 2346
- 1764 자바
- 2748 자바
- 티움투어
- 10813 자바
- BFS
- 2798 자바
- 28278 스택 2
- dfs
- 백준 28278 자바
- 파이썬
- 데보션영 3기
- 2164 자바
- 10807 자바
- 자바 10866
- IAM 사용자
- 그리디
- 자바 28278
- 백준 2346 자바
- 코딩테스트
Archives
- Today
- Total
자두의 데브로그
[MySQL] 프로그래머스 입양 시각 구하기(2) 본문
https://school.programmers.co.kr/learn/courses/30/lessons/59413
재귀 쿼리로 풀면 될 것 같다고 생각했는데 나의 착각이었다고 한다.
변수 사용하면 되는 문제였는데 세션 변수를 사용해서 문제를 풀어봤다.
세션 변수
- SQL 쿼리에서 선언 후 사용
- @ 기호를 사용하여 선언
- 세션이 유지되는 동안 사용 가능
SET @my_var = 10;
SELECT @my_var; -- 10 반환
SELECT column_name
FROM table_name
WHERE column_name > @my_var;
문제에서는 23까지의 hour을 구하면 되고, 해당 hour에 대한 count 값을 가지면 되니까 select 절에서 서브쿼리로 count(*) 값 가져오면된다. 이때 마지막 where 절이 가장 마지막에 실행되는 게 아니라 select가 순서상 가장 마지막에 실행되므로, where 절에서는 23보다 작을 때까지의 조건으로 실행하면 된다.
set @hour := -1;
SELECT (@hour := @hour + 1) as HOUR, (select count(*) from ANIMAL_OUTS where hour(DATETIME) = @hour) as count
from ANIMAL_OUTS
where @hour < 23;
'코딩테스트 > SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 언어별 개발자 분류하기 (0) | 2024.10.11 |
---|---|
[MySQL] 프로그래머스 가격대 별 상품 개수 구하기 (1) | 2024.10.11 |
[MySQL] 프로그래머스 년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2024.10.11 |
[MySQL] 프로그래머스 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (2) | 2024.10.11 |
[MySQL] 프로그래머스 연도별 대장균 크기의 편차 구하기 (0) | 2024.10.10 |