일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정규분포 #히스토그램 #엑셀 정규분포 #파이썬 정규분포 #R 정규분포 #파이썬 히스토그램 #엑셀 히스토그램 #R 히스토그램 #통계학 정리
- LV4 #그룹별 조건에 맞는 식당 목록 출력하기 #정답 #풀이 #MYSQL
- S22 플러스
- 프로그래머스 sql #5월 식품들의 총 매출 조회하기 #풀이 #정답 #mysql #sql 코테
- 엑셀 쉽게 배우기
- 갤럭시워치4 #갤워치4 #갤럭시워치4 연동 #갤워치4 배터리 #갤럭시워치4 배터리 #갤럭시워치4 후기 #갤럭시워치4 실사용 후기
- 프로그래머스 #SQL #LV4 #입양시각 #입양시각 구하기(2) #정답 #풀이
- 프로그래머스 SQL
- 프로그래머스 SQL 코딩테스트 #프로그래머스 #SQL #LV4
- S22 사전예약
- IFERROR 샘플
- EXCEL IFERROR
- S22 리뷰
- 엑셀 초보자
- IFERROR 예제
- IF EXCEL
- iferror
- 프로그래머스 #SQL 코딩 테스트 #SQL 코테 #SQL 프로그래머스 정답 #SQL LV4
- galaxy s22
- SQL 교재 # SQL 책 추천 #SQL #SQL 교재 추천 #SQL 입문 책 #SQL 입문 #쿼리 책 #SQL 공부 교재 #SQL 공부 #SQL 공부 책
- 식품분류별 가장 비싼 식품의 정보 조회하기
- IFERROR 실제
- 엑셀 iferror
- S22
- S22 +
- 파이썬 #python #파이썬 집합 #파이썬을 이용한 집합 #union in python #in python #파이썬 통계 #통계 파이썬
- 디비버 #DBeaver #Postgresql #포스트그레 #SQL #에스큐엘 #쿼리
- 갤럭시 S22
- S22 울트라
- 프로그래머스 sql #lv4 #mysql #풀이 #정답 #
- Today
- Total
Hellow gyu`s world
프로그래머스 SQL LV4 입양시각 구하기(2) 풀이 본문
1. https://school.programmers.co.kr/learn/courses/30/lessons/59413
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
난이도가 LV4 되어있지만..체감상 엄청 쉬웠던 문제..
원하는 답이 시간대별(00H~23H) 입양 COUNT를 구하는 것인데 테이블에는 전체 시간대가 존재하지 않고 입양 시각만 존재함. 이 경우에 날짜를 붙일때 달력 테이블을 이용하는 것과 똑같은 개념으로 접근함 즉, 0부터 24까지의 시간대별과 기존 테이블에서 시간대 별 카운트 개수를 래프트 조인으로 붙여주고 NULL값을 0으로 처리해주면 됨.
처음 문제를 보자마자 든 생각은 postgresql 기준으로 generate_seriese 함수를 이용해서 00~24를 생성한 후 여기에다 기존테이블 데이터를 붙여야겠다 했지만 정답 제출에 사용하는 db는 mysql이므로 재귀함수를 이용.
00~24를 생성하기위해 RECURSIVE문을 이용함 아래에 쿼리문 첨부
정답 :
WITH RECURSIVE nums AS (
SELECT 0 AS value -- 0부터 시작
UNION ALL
SELECT value + 1 AS value
FROM nums
WHERE nums.value <= 22 --반복시작 00시는 24시이므로 23시까지만 나오게 범위 설정
)
SELECT nums.value, ifnull(t2.value,0) -- 입양정보가 없는 시간대에는 NULL값이 되므로 NULL을 0으로 처리
FROM nums
left join (
select hour(datetime) as t2_key, count(1) AS value
from animal_outs
group by 1 -- 시간대별 입양 카운트 개수를 00~24 시간대에 래프트 조인
) t2
on nums.value = t2.value -- 조인 키값은 시간대
order by 1 asc
혹시 제가 틀렸거나 다른 의견이 있으시면 댓글로 달아주시면 감사하겠습니당
'데이터 분석 > SQL' 카테고리의 다른 글
프로그래머스 SQL 코딩테스트 LV4 년, 월, 성별 별 상품 구매 회원 수 구하기 풀이 (0) | 2022.10.14 |
---|---|
프래그래머스 sql lv 4 5월 식품들의 총 매출 조회하기 풀이 in mysql (0) | 2022.10.13 |
프로그래머스 sql lv4 식품분류별 가장 비싼 식품의 정보 조회하기 풀이 in mysql (0) | 2022.10.13 |
프로그래머스 SQL LV4 그룹별 조건에 맞는 식당 목록 출력하기 풀이 in mysql (0) | 2022.10.13 |
[SQL] 01. DBeaver 설치 및 단축키 (4) | 2022.04.08 |