>  기사  >  데이터 베이스  >  MySQL에서 SQL을 사용하여 다양한 패스의 평균값을 계산하는 방법은 무엇입니까?

MySQL에서 SQL을 사용하여 다양한 패스의 평균값을 계산하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-30 18:50:30928검색

How to Calculate Average Values for Different Passes Using SQL in MySQL?

SQL을 사용하여 다양한 패스의 평균 값 계산

MySQL에서는 AVG 및 GROUP BY를 사용하여 데이터를 그룹화하여 평균 값을 검색할 수 있습니다. 기능. 그러나 특정 열의 다양한 값에 대한 평균을 계산하는 등 여러 기준을 처리할 경우 작업이 약간 더 복잡해집니다.

이 경우 목표는 'val' 열의 평균을 추출하는 것입니다. 1부터 7까지의 다양한 'pass' 값에 대한 각 고유 'id'에 대해.

하위 쿼리 솔루션

한 가지 접근 방식은 하위 쿼리를 사용하는 것입니다. AVG 함수 내 'pass'의 각 값. 그러면 각 'id' 및 'pass' 조합에 대한 값 세트가 반환됩니다.

<code class="sql">SELECT d1.id,
    (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2
     WHERE d2.id = d1.id AND pass = 1) as val_1,
    (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2
     WHERE d2.id = d1.id AND pass = 2) as val_2,
    [...]
    (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2
     WHERE d2.id = d1.id AND pass = 7) as val_7
from data_r1 d1
GROUP BY d1.id</code>

이 쿼리는 먼저 'data_r1' 테이블에서 고유한 'id' 값을 가져옵니다. 그런 다음 각 'id'에 대해 7개의 하위 쿼리를 실행하여 'pass'의 가능한 값 각각에 대한 평균값을 계산하고 이를 별도의 'val_n' 열에 저장합니다. IFNULL 함수는 하위 쿼리가 NULL 값을 반환하는 경우를 처리하는 데 사용되며 결과는 숫자 또는 0이 되도록 보장합니다.

이 접근 방식의 장점은 각 'id'에 대해 단일 행을 반환한다는 것입니다. 결과를 가지고 작업하기가 더 쉬워졌습니다. 그러나 특히 'pass'에 가능한 값이 많은 경우 다소 장황할 수 있습니다.

대체 접근 방식

더 간결한 방법을 선호하는 경우 다음을 수행할 수 있습니다. 유사한 결과를 얻으려면 GROUP BY 및 CASE 문의 조합을 사용하십시오.

<code class="sql">SELECT id,
       SUM(CASE WHEN pass = 1 THEN val END) / COUNT(DISTINCT CASE WHEN pass = 1 THEN id END) AS val_1,
       SUM(CASE WHEN pass = 2 THEN val END) / COUNT(DISTINCT CASE WHEN pass = 2 THEN id END) AS val_2,
       [...]
       SUM(CASE WHEN pass = 7 THEN val END) / COUNT(DISTINCT CASE WHEN pass = 7 THEN id END) AS val_7
FROM data_r1
GROUP BY id</code>

이 쿼리는 여러 CASE 문을 사용하여 'pass' 값을 평가하고 해당 'val' 값만 계산에 포함합니다. 분모의 COUNT(DISTINCT ...) 표현식은 특정 'id' 및 'pass' 조합에 대해 'val' 값이 여러 개 있는 경우에도 평균이 올바르게 계산되도록 보장합니다.

다시 한 번 말씀드리지만, IFNULL 함수를 사용하면 나누기 결과가 NULL이 되는 경우를 처리하여 출력이 숫자 또는 0인지 확인할 수 있습니다.

어떤 접근 방식을 선택하든 이러한 쿼리는 평균 'val' 값을 효과적으로 추출합니다. 'data_r1' 테이블의 다양한 'pass' 값에 대한 각 고유 'id'.

위 내용은 MySQL에서 SQL을 사용하여 다양한 패스의 평균값을 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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