집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 `AVG` 및 `GROUP BY`를 사용하여 테이블 내 여러 그룹에 대한 열의 여러 평균을 계산하려면 어떻게 해야 합니까?
AVG 및 Group By를 사용한 SQL 쿼리
MySQL에서 테이블 내의 여러 그룹에 대한 열의 여러 평균을 추출하는 쿼리는 다음을 수행할 수 있습니다. 이는 AVG() 및 GROUP BY 절의 조합을 사용하여 달성됩니다. 다음 구조의 data_r1 테이블을 고려해 보십시오.
mysql> select id, pass, val from data_r1 limit 10; +------------+--------------+----------------+ | id | pass | val | +------------+--------------+----------------+ | DA02959106 | 5.0000000000 | 44.4007000000 | | 08A5969201 | 1.0000000000 | 182.4100000000 | | 08A5969201 | 2.0000000000 | 138.7880000000 | | DA02882103 | 5.0000000000 | 44.7265000000 | | DA02959106 | 1.0000000000 | 186.1470000000 | | DA02959106 | 2.0000000000 | 148.2660000000 | | DA02959106 | 3.0000000000 | 111.9050000000 | | DA02959106 | 4.0000000000 | 76.1485000000 | | DA02959106 | 5.0000000000 | 44.4007000000 | | DA02959106 | 4.0000000000 | 76.6485000000 |
이 테이블에서 원하는 정보를 추출하려면 다음 쿼리를 사용하십시오.
SELECT id, pass, AVG(val) AS val FROM data_r1 GROUP BY id, pass;
이 쿼리는 data_r1 테이블의 행을 그룹화합니다. id 및 pass 열을 모두 기준으로 한 다음 각 그룹에 대한 val 열의 평균 값을 계산합니다. 결과는 id와 pass의 각 고유 조합에 대해 하나의 행이 있고 val에 해당하는 평균 값이 있는 테이블입니다.
동일한 결과를 얻지만 다음과 같은 각 고유 ID에 대해 단일 행을 반환하는 대체 쿼리입니다. 다중 평균 값:
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 = 3) as val_3, (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 WHERE d2.id = d1.id AND pass = 4) as val_4, (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 WHERE d2.id = d1.id AND pass = 5) as val_5, (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 WHERE d2.id = d1.id AND pass = 6) as val_6, (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
이 쿼리는 중첩된 하위 쿼리를 사용하여 특정 ID 그룹 내의 각 통과 값에 대한 평균 값을 계산합니다. IFNULL() 함수는 null 값이 0으로 대체되어 0으로 나누는 오류를 방지하는 데 사용됩니다.
위 내용은 MySQL에서 `AVG` 및 `GROUP BY`를 사용하여 테이블 내 여러 그룹에 대한 열의 여러 평균을 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!