우리 팀은 AI 챗봇 서비스를 운영해요. 사용자가 대화를 시작할 때마다 chats 테이블에 한 행이 쌓여요(누가, 언제 시작했는지). 서비스는 여러 나라에서 쓰여서 시각 (started_at)은 UTC 기준으로 저장돼요. 운영팀이 아침마다 보는 "날짜별 대화 수" 리포트를 만드는 SELECT 문 하나를 작성하세요. 운영팀은 한국에서 일해서, 리포트의 날짜는 한국 시간(Asia/Seoul) 기준이에요. 결과는 두 컬럼으로 내요: - report_date : 날짜(한국 시간 기준) - chat_count : 그 날짜에 시작된 대화 수 solution.sql 에 쿼리를 쓰고, '테스트 실행' 을 누르면 실제 데이터베이스에서 돌아가 결과 표가 나와요.
PostgreSQL 로 AI 챗봇 서비스의 "날짜별 대화 수" 리포트를 만드는 SELECT 문을 짜는 문제입니다. 대화 기록이 담긴 테이블이 데이터와 함께 준비돼 있고, '테스트 실행' 을 누르면 짠 쿼리가 진짜 데이터베이스에서 돌아 결과 표를 보여줍니다. 결과는 두 칸으로 내는데, 한 칸은 날짜, 다른 칸은 그 날짜에 시작된 대화 수입니다.
이 문제는 "같은 시각도 어느 날짜에 속하는지는 기준에 따라 달라진다"를 다룹니다. 시각을 세계 공통 기준(UTC)으로 저장하는 서비스에서 날짜별 집계를 하면, 낮 시간 데이터만 봐서는 멀쩡해 보여도 자정 근처 데이터에서 답이 달라집니다. 이런 쿼리를 믿기 전에는 흔한 낮 시간 데이터 몇 줄만 훑지 말고, 날짜가 넘어가는 순간의 데이터가 의도한 날짜로 묶이는지 실제로 돌려 눈으로 봐야 합니다.