>데이터 베이스 >MySQL 튜토리얼 >Null 값이 있는 경우에도 월별 평균에 모든 월을 포함하는 방법은 무엇입니까?

Null 값이 있는 경우에도 월별 평균에 모든 월을 포함하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-01 13:29:05627검색

How to Include All Months in Monthly Averages, Even Those with Null Values?

특정 날짜 범위에서 Null 값이 포함된 모든 달 추출

일정 범위를 기준으로 월 평균을 계산할 때 값이 0이거나 누락된 월을 포함하는 것이 중요합니다. 이렇게 하면 지정된 기간 내의 모든 월이 고려됩니다.

MySQL에서 이를 달성하기 위한 한 가지 접근 방식은 지정된 범위 내에서 가능한 모든 월을 포함하는 별도의 테이블을 생성하는 것입니다. "날짜 테이블"이라고 하는 이 테이블은 적절한 날짜, 연도 및 기타 관련 속성으로 채워질 수 있습니다.

날짜 테이블을 사용하면 원본 데이터 테이블과 LEFT JOIN을 수행할 수 있습니다. . LEFT JOIN 작업은 원본 테이블에 일치하는 행이 없더라도 날짜 테이블의 모든 행이 결과에 포함되도록 합니다. 결과적으로 출력에는 데이터가 있는지 여부에 관계없이 지정된 범위 내의 모든 월이 표시됩니다.

다음은 이 접근 방식을 보여주는 예제 쿼리입니다.

<code class="sql">SELECT 
    `DT`.`myYear`, 
    `DT`.`myMonth`, 
    AVG(`myTable`.`value1`) AS `avg_value_1`, 
    AVG(`myTable`.`value2`) AS `avg_value_2`
FROM 
    `dateTable` AS `DT`
LEFT JOIN 
    `myTable` 
ON 
    `dateTable`.`myDate` = `myTable`.`save_date`
WHERE 
    `dateTable`.`myDate` BETWEEN '2009-01-01' AND '2009-07-01'
GROUP BY 
    `DT`.`myYear`, `DT`.`myMonth`</code>

이 쿼리는 다음을 반환합니다. 원본 테이블에 데이터가 없는 달을 포함하여 2009년 1월부터 7월까지의 모든 달입니다. AVG() 함수는 데이터가 있는 달의 값 집계를 처리하는 반면, LEFT JOIN 연산은 null 값이 있는 달에 평균 0이 할당되도록 보장합니다.

날짜 테이블을 활용하고 LEFT JOIN을 수행하면 데이터 유무에 관계없이 특정 기간 내의 모든 월을 효과적으로 추출할 수 있어 월 평균에 대한 종합적인 분석이 가능합니다.

위 내용은 Null 값이 있는 경우에도 월별 평균에 모든 월을 포함하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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