>데이터 베이스 >MySQL 튜토리얼 >MySQL 쿼리에서 누락된 날짜를 처리하는 방법은 무엇입니까?

MySQL 쿼리에서 누락된 날짜를 처리하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-23 11:48:34266검색

How to Handle Missing Dates in MySQL Queries?

MySQL 쿼리에서 데이터 공백을 메우는 방법

이 질문은 MySQL에서 쿼리할 때 데이터 공백이 발생할 수 있는 일반적인 문제를 탐구합니다. 특정 날짜. 사용자의 기존 쿼리는 날짜 기반 지표를 검색하지만 누락된 날짜에 대한 데이터는 포함하지 않습니다.

더미 행 소스를 사용하여 데이터 간격 채우기

데이터 간격을 채우려면 , 솔루션에는 "날짜"라는 도우미 테이블을 만드는 것이 포함됩니다. 이 테이블에는 원하는 시작부터 종료 범위까지의 모든 날짜가 포함되어 있습니다. 그런 다음 날짜 테이블과 메시지 테이블 사이에 LEFT JOIN이 수행됩니다.

수정된 쿼리는 다음과 같습니다.

SELECT  d.dt AS date,
        COUNT(*) AS total,
        SUM(attitude = 'positive') AS positive,
        SUM(attitude = 'neutral') AS neutral,
        SUM(attitude = 'negative') AS negative
FROM    dates d
LEFT JOIN
        messages m
ON      m.posted_at >= d.dt
        AND m.posted_at < d.dt + INTERVAL 1 DAYS
        AND spam = 0
        AND duplicate = 0
        AND ignore = 0
GROUP BY
        d.dt
ORDER BY
        d.dt

설명:

  • 날짜 테이블은 원하는 범위.
  • LEFT JOIN은 일치하는 메시지가 없더라도 날짜 테이블의 모든 날짜가 포함되도록 보장합니다.
  • ON 절의 필터는 지정된 날짜에 유효한 메시지만 포함하도록 보장합니다. 날짜가 포함됩니다.
  • GROUP BY 절은 각 날짜에 대한 데이터를 집계합니다. date.

더미 행 소스 사용의 대안

MySQL은 일련의 날짜를 생성하는 내장 함수가 없다는 점에서 독특합니다. 그러나 다른 데이터베이스 시스템에서 사용할 수 있는 몇 가지 대체 접근 방식이 있습니다.

  • PostgreSQL에는 generate_series() 함수가 있습니다.
  • Oracle 및 SQL Server는 CONNECT BY 또는 재귀 CTE를 사용하여 재귀를 지원합니다.

위 내용은 MySQL 쿼리에서 누락된 날짜를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.