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 | 31 |
Tags
- 머신러닝
- 리액트 네이티브 프로젝트 생성
- 팀플회고
- 백준
- 깃 연동
- 네트워크
- 백준 4358 자바
- 깃허브 로그인
- 데이터베이스
- HTTP
- 정리
- 백준 4358번
- 지네릭스
- 모두를위한딥러닝
- 깃 터미널 연동
- 자바
- 모두의 네트워크
- 딥러닝
- SQL
- 백준 5525번
- 리액트 네이티브
- 데베
- 깃허브 토큰 인증
- React Native
- 리액트 네이티브 시작하기
- 모두의네트워크
- 모두를 위한 딥러닝
- 백준 4949번
- 문자열
- 스터디
Archives
- Today
- Total
솜이의 데브로그
프로그래머스 SQL ) 입양 시각 구하기(2) 본문
https://programmers.co.kr/learn/courses/30/lessons/59413
코딩테스트 연습 > GROUP BY > 입양 시각 구하기(2)
문제
보호소에서 몇시에 입양이 가장 활발하게 일어나는지 알아보는 문제.
0시부너 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성. 이 때 결과는 시간대 순으로 정렬해야 한다.
코드 (MySQL)
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
ORDER BY HOUR
모든 시간대를 조회해야하는 문제로, '쿼리문에서 로컬 변수를 활용하는 문제'이다.
- 위에서 SET 옆에 변수명과 초기값을 설정해야한다.
- @가 붙은 변수는 프로시저가 종료되어도 유지된다.
- @hour 은 초기값을 -1로 설정한다.
- SELECT(@hour := @hour +1) 은 @hour의 값에 1씩 증가시키면서 SELECT 문 전체를 실행하게 된다.
- 이 때 처음에 @hour 값이 -1 이므로, 처음에 0이 되어 저장된다.
- @hour<23 일 때까지 @hour 값이 계속 +1 씩 증가한다.
이 때, := 는 비교연산자 = 와 혼동을 피하기 위한 '대입 연산자'이다!
쿼리문에서 로컬변수를 활용해본 적이 없어서 새로운 타입의 문제였다. SQL 에도 반복문처럼 1씩 더하며 실행하는것이 할 수 있다는게 신기했다.
'Algorithm > Programmers' 카테고리의 다른 글
Programmers ) 괄호 회전 (java) (0) | 2022.05.28 |
---|---|
Programmers ) 힙 디스크 컨트롤러 (java) (0) | 2022.05.27 |
Programmers ) 완전탐색 모의고사 (java) (0) | 2022.03.06 |