문제: 프로그래머스 - 입양 시각 구하기 (1)
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다
접근 방법
처음에는 CASE를 사용해서 시간대별로 분류를 해줘야 하나 생각했다..
ex. CASE WHEN 9 =< HOUR <10 then '9'
이런식으로 ? 근데 9부터 19이면 .. 열한번을 해줘야 하는데 이건 아닐 거 같은데?!
그래서 생각해 낸게 DATE_FORMAT 으로 'YYYY-MM-DD HH:MM:SS' 형태를 'H' 형태로 바꿀 수 있을까?
사실 안 될 줄 알았는데 이게 되네..?
(항상 완벽한 코드를 짜놓고 코드 실행을 클릭했는데.. 그냥 앞으로는 이런식으로 다양한 시도를 해봐야겠따..)
GROUP BY로 묶어주고 9시부터 19시 사이 필터해준 코드 실행
-- 코드를 입력하세요
SELECT DATE_FORMAT(DATETIME, '%H') as HOUR, count(1) as COUNT, DATETIME
FROM ANIMAL_OUTS
GROUP BY 1
HAVING 9 < HOUR < 20
ORDER BY 1
근데 결과값에 7시부터 포함되네?? 뭐가 문제일까?
GPT한테 물어보니까 HAVING은 연산기호를 두 개 못 쓴다고 함..
BETWEEN으로 바꿔주면 해결 가능
-- 코드를 입력하세요
SELECT DATE_FORMAT(DATETIME, '%H') as HOUR, count(1) as COUNT, DATETIME
FROM ANIMAL_OUTS
GROUP BY 1
HAVING HOUR BETWEEN 9 and 19
ORDER BY 1
문제: 프로그래머스 - 진료과별 총 예약 횟수 출력하
APPOINTMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요.
접근방법
날짜가 2022-05인 것들만 필터링 -> MCDP_CD로 묶어주기 -> COUNT해주기
-- 코드를 입력하세요
SELECT MCDP_CD AS 진료과코드, COUNT(1) AS 5월예약건수
FROM APPOINTMENT
WHERE APNT_YMD LIKE '2022-05%'
GROUP BY MCDP_CD
ORDER BY 2, MCDP_CD
'SQL' 카테고리의 다른 글
[SQL]UNION, EXCEPT, INTERSECT, COALESCE, NULLIF, WINDOW함수 (0) | 2024.01.04 |
---|---|
[SQL] BOOLEAN, NULL 값 처리하기|채널별 월별 매출액 테이블 만들기 (0) | 2024.01.02 |
[SQL]JOIN이란? INNER, LEFT, FULL, CROSS JOIN (1) | 2024.01.02 |
[SQL]GROUP BY와 CTAS, 데이터 품질 확인하기 (1) | 2024.01.01 |
[SQL] google colab으로 sql 실습하기 (0) | 2024.01.01 |