안녕하세요.
SQL 를 접한지 얼마 안되는 초보입니다.
날짜시간 데이터를 가지고 통계를 내고 있습니다.
각 입력 날짜마다 시간대별 통계를 구하고자 합니다.
아래와 같이 작성하면 월/일별 통계를 구하는데 데이터수를 구하는데, 여기에 각 날짜에 시간대별 데이터를 구하려고합니다.
한줄씩은 사용은 하겠는데, 한번에 같이 구하려면 어떻게 넣어야 하는지 궁금합니다.
입력된 데이터는
2021-01-21 13:20:33
위 처럼 되어 있습니다.
SELECT DATE_FORMAT(join_date,'%m-%d') AS 가입날자 , COUNT(*) FROM user GROUP BY 가입날자;
추가로... 검색하면서 하나씩 배우고 있는데 어떻게 배우는게 좋은지 조언도 같이 해주시면 감사하겠습니다.
1. 필요한 검색기간 조건 주기 WHERE
2. 집계 기준별 그룹핑 (년, 월, 일, 시 등으로 GROUP BY)
3. Group BY 에서의 별칭 사용은 표준이 아닙니다.(MySQL 에서만 허용되는 구문으로 표준 사용 권장)
-- 예1) 특정일자('2021-01-20')에 대한 시간(00~23시)별 통계 -- SELECT DATE_FORMAT(join_date,'%Y-%m-%d') AS 날짜 , DATE_FORMAT(join_date,'%H') AS 시간 , COUNT(*) 건수 FROM user WHERE join_date >= '2021-01-20' AND join_date < DATE_ADD('2021-01-21', INTERVAL 1 DAY) GROUP BY DATE_FORMAT(join_date,'%Y-%m-%d') , DATE_FORMAT(join_date,'%H') ; -- 예2) 특정월('2020-12')에 대한 일(01~31일)별 통계 -- SELECT DATE_FORMAT(join_date,'%Y-%m-%d') AS 날짜 , COUNT(*) 건수 FROM user WHERE join_date >= CONCAT('2020-12', '-01') AND join_date < DATE_ADD(CONCAT('2020-12', '-01'), INTERVAL 1 MONTH) GROUP BY DATE_FORMAT(join_date,'%Y-%m-%d') ;