>데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 NULL 값이 있는 여러 열의 평균을 올바르게 계산하는 방법은 무엇입니까?

SQL Server에서 NULL 값이 있는 여러 열의 평균을 올바르게 계산하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-27 04:08:10888검색

How to Correctly Calculate the Average of Multiple Columns with NULL Values in SQL Server?

여러 열의 평균

테이블에 있는 여러 열의 평균을 계산할 때 Null 허용 여부를 올바르게 처리하는 것이 중요합니다. 다음 상황을 고려하십시오.

문제:

다음 데이터가 포함된 "요청"이라는 테이블이 있습니다.

Req_ID    R1   R2   R3   R4   R5
R12673    2    5    3    7    10
R34721    3    5    2    1    8
R27835    1    3    8    5    6

원하는 작업은 다음과 같습니다. R1, R2, R3, R4 및 R5 열의 평균을 표시합니다. 그러나 다음 쿼리를 사용하는 경우:

Select Req_ID, Avg(R1+R2+R3+R4+R5) as Average
from Request
Group by Req_ID

평균 대신 값의 합계를 구합니다.

해결책:

문제는 NULL 값을 처리하는 데 있습니다. 열이 NULL을 허용하는 경우 NULL의 합계도 NULL입니다. 평균을 올바르게 계산하려면 NULL을 무시해야 합니다.

Post-2008 구문:

SQL Server 2008 이상을 사용하는 경우 다음을 사용할 수 있습니다. 다음 구문:

SELECT *,
       (SELECT AVG(c)
        FROM   (VALUES(R1),
                      (R2),
                      (R3),
                      (R4),
                      (R5)) T (c)) AS [Average]
FROM   Request

이 구문은 VALUES 절을 사용하여 행이 하나인 테이블을 구성합니다. 각 열. 그런 다음 AVG 집계가 이 테이블에 적용되고 NULL 값이 포함된 모든 행은 무시됩니다.

2008년 이전 구문:

SQL Server 2005 또는 이전에는 다음 구문을 사용할 수 있습니다.

SELECT *,
       (SELECT AVG(c)
        FROM   (SELECT R1
                UNION ALL
                SELECT R2
                UNION ALL
                SELECT R3
                UNION ALL
                SELECT R4
                UNION ALL
                SELECT R5) T (c)) AS [Average]
FROM   Request

이 구문은 UNION ALL을 사용하여 각 열에 대해 하나의 행이 있는 테이블입니다. 그런 다음 NULL 값이 포함된 모든 행을 무시하고 AVG 집계가 이 테이블에 적용됩니다.

위 내용은 SQL Server에서 NULL 값이 있는 여러 열의 평균을 올바르게 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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