> 데이터 베이스 > MySQL 튜토리얼 > MySQL 쿼리에서 날짜 공백을 메우는 방법은 무엇입니까?

MySQL 쿼리에서 날짜 공백을 메우는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-24 21:37:45
원래의
136명이 탐색했습니다.

How to Fill Date Gaps in MySQL Queries?

MySQL에서 날짜 공백 채우기

MySQL에서 날짜 기반 쿼리로 작업할 때 데이터에 공백이 있는 상황이 발생할 수 있습니다. 특정 날짜에. 이는 데이터에 대한 포괄적인 보기를 제공하거나 전체 날짜 집합에 의존하는 계산을 수행하려는 경우 문제가 될 수 있습니다.

날짜 간격이 있는 쿼리:

이 문제를 설명하려면 다음 쿼리를 고려하십시오.

SELECT DATE(posted_at) AS date,
    COUNT(*) AS total,
    SUM(attitude = 'positive') AS positive,
    SUM(attitude = 'neutral') AS neutral,
    SUM(attitude = 'negative') AS negative
    FROM `messages`
    WHERE (`messages`.brand_id = 1)
    AND (`messages`.`spam` = 0
    AND `messages`.`duplicate` = 0
    AND `messages`.`ignore` = 0)
    GROUP BY date ORDER BY date
로그인 후 복사

이 쿼리는 날짜별로 그룹화된 결과를 반환하고 총 개수와 태도 합계를 표시합니다. 날짜마다. 그러나 데이터가 없는 날짜가 있으면 결과에 포함되지 않으므로 데이터세트에 공백이 발생합니다.

공백 채우기:

채우려면 0과의 간격이 있는 경우 도우미 테이블을 활용하여 시작 날짜와 종료 날짜 사이의 완전한 날짜 집합을 생성할 수 있습니다. 헬퍼 테이블은 다음 쿼리를 사용하여 생성할 수 있습니다.

SELECT date AS dt FROM (
    SELECT CURDATE() AS date
    UNION ALL
    SELECT date + INTERVAL 1 DAY FROM dates
    FROM dates
    WHERE date < DATE_ADD(CURDATE(), INTERVAL 1 YEAR)
) dates
로그인 후 복사

이 쿼리는 미래의 1년이 될 때까지 현재 날짜에 1일을 재귀적으로 추가합니다.

다음 쿼리를 사용합니다. 도우미 테이블:

이제 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
로그인 후 복사

이 쿼리는 데이터가 없는 날짜를 포함하여 전체 날짜 집합을 반환하고 공백을 0으로 채웁니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿