집 >데이터 베이스 >MySQL 튜토리얼 >하위 쿼리를 사용하여 SQL의 여러 테이블에서 데이터를 올바르게 집계하는 방법은 무엇입니까?
여러 테이블의 데이터를 집계하는 SQL 쿼리
SQL에서는 다양한 기술을 사용하여 여러 테이블의 데이터를 집계할 수 있습니다. 다음은 두 테이블의 데이터를 결합하는 쿼리에 대한 시나리오와 솔루션입니다.
시나리오:
두 테이블 모두 [PROJECT] 열을 포함하는 AP와 INV라는 두 테이블을 생각해 보세요. 및 [값]. 목표는 두 테이블에서 각 프로젝트에 대한 [값]의 합계를 계산하는 결과를 검색하여 다음 형식을 얻는 것입니다.
PROJECT | SUM_AP | SUM_INV ---------+--------+-------- XXXXX | 500 | 800
잘못된 쿼리:
다음 쿼리를 시도했지만 결과가 부정확했습니다. 합계:
SELECT AP.[PROJECT], SUM(AP.Value) AS SUM_AP, SUM(INV.Value) AS SUM_INV FROM AP INNER JOIN INV ON (AP.[PROJECT] = INV.[PROJECT]) WHERE AP.[PROJECT] = 'XXXXX' GROUP BY AP.[PROJECT]
잘못된 결과의 이유:
잘못된 쿼리는 합계를 적용하기 전에 값을 그룹화하므로 중복된 프로젝트 값이 합계에 포함됩니다.
맞습니다 해결책:
이 문제를 해결하기 위해 하위 선택과 관련된 쿼리를 사용할 수 있습니다.
SELECT AP1.[PROJECT], (SELECT SUM(AP2.Value) FROM AP AS AP2 WHERE AP2.PROJECT = AP1.PROJECT) AS SUM_AP, (SELECT SUM(INV2.Value) FROM INV AS INV2 WHERE INV2.PROJECT = AP1.PROJECT) AS SUM_INV FROM AP AS AP1 INNER JOIN INV AS INV1 ON (AP1.[PROJECT] = INV1.[PROJECT]) WHERE AP1.[PROJECT] = 'XXXXX' GROUP BY AP1.[PROJECT]
이 쿼리는 하위 선택을 활용하여 각 프로젝트 내의 합계를 별도로 계산합니다. 중복값 문제를 해결하고 올바른 집계 결과를 제공합니다.
위 내용은 하위 쿼리를 사용하여 SQL의 여러 테이블에서 데이터를 올바르게 집계하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!