>데이터 베이스 >MySQL 튜토리얼 >데이터가 누락된 경우에도 MySQL에서 월별 기록을 표시하는 방법은 무엇입니까?

데이터가 누락된 경우에도 MySQL에서 월별 기록을 표시하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-06 22:01:02633검색

How to Show Monthly Records in MySQL Even with Missing Data?

데이터가 누락되어도 월간 기록을 표시하는 MySQL 쿼리

질문:

In a 사용자 테이블에서 월별 레코드를 검색해야 하는 상황에서는 특정 달에 대한 데이터가 누락될 수 있습니다. 이 문제를 어떻게 극복하고 데이터 포함 여부에 관계없이 모든 달을 표시할 수 있습니까?

답변:

다음을 포함하여 월별 사용자 기록을 검색하려면 항목이 없는 달의 경우 파생 테이블과 왼쪽 조인의 조합을 사용하여 솔루션을 구현할 수 있습니다.

SELECT COUNT(u.userID) AS total, m.month, YEAR(m.merge_date) AS year
FROM (
           SELECT '2013-01-01' AS merge_date
           UNION SELECT '2013-02-01' AS merge_date
           UNION SELECT '2013-03-01' AS merge_date
           UNION SELECT '2013-04-01' AS merge_date
           UNION SELECT '2013-05-01' AS merge_date
           UNION SELECT '2013-06-01' AS merge_date
           UNION SELECT '2013-07-01' AS merge_date
           UNION SELECT '2013-08-01' AS merge_date
           UNION SELECT '2013-09-01' AS merge_date
           UNION SELECT '2013-10-01' AS merge_date
           UNION SELECT '2013-11-01' AS merge_date
           UNION SELECT '2013-12-01' AS merge_date
          ) AS m
LEFT JOIN users u
       ON MONTH(m.merge_date) = MONTH(u.userRegistredDate)
          AND YEAR(m.merge_date) = YEAR(u.userRegistredDate)
GROUP BY m.merge_date
ORDER BY 1+1;

설명:

  • 파생 테이블 "m"은 특정 연도 내의 모든 월을 나타내는 "merge_date"라는 열이 있는 가상 테이블을 생성합니다.
  • LEFT JOIN 작업은 "users" 테이블을 파생 테이블 "m"에 연결합니다. "
  • group by 절은 merge_date 기준으로 결과를 집계하여 월별 사용자 수를 계산합니다.
  • order by 절은 결과를 월별 오름차순으로 정렬하는 데 사용됩니다.

왼쪽 조인을 사용하면 쿼리는 "users" 테이블과 파생 테이블 모두에서 데이터를 검색하여 결과에 해당 사용자 레코드가 없는 달을 포함하여 모든 달이 포함되도록 합니다. 이 방법은 특정 달의 데이터가 누락되는 상황을 효과적으로 처리합니다.

위 내용은 데이터가 누락된 경우에도 MySQL에서 월별 기록을 표시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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