집 >데이터 베이스 >MySQL 튜토리얼 >작업 수와 지연 작업 수를 표시하기 위해 두 개의 SELECT 문을 단일 쿼리로 결합하려면 어떻게 해야 합니까?
SELECT 문 결과를 단일 쿼리로 결합
데이터베이스 작업 시 분석을 위해 여러 데이터 소스의 데이터를 결합하는 것은 매우 중요합니다. 그러나 이를 달성하는 데는 때때로 어려움이 따릅니다. 이 예에는 각각 작업 데이터베이스에서 특정 정보를 검색하는 두 개의 별도 SELECT 문이 있습니다.
첫 번째 SELECT 문은 각 사람에게 할당된 작업 수를 계산합니다.
<code class="language-sql">SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks</code>
두 번째 SELECT 문은 각 개인의 기한이 지난 작업 수를 식별합니다(나이가 Palt를 초과하는 작업).
<code class="language-sql">SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks</code>
우리의 목표는 이 두 쿼리의 결과를 각 사람의 식별자(ks), 해당 사람이 수행한 총 작업 수(# Tasks) 및 기한이 지난 작업 수(# Late)가 포함된 테이블로 결합하는 것입니다. 열.
이를 달성하는 한 가지 방법은 JOIN 연산을 사용하는 것입니다. 특히 LEFT JOIN을 사용하면 조인 키(ks)가 일치할 때 첫 번째 테이블(t1)의 모든 행과 두 번째 테이블(t2)의 해당 행을 포함할 수 있습니다. t2에 해당 행이 없으면 결과에는 NULL 값이 포함됩니다. 이를 통해 기한이 지난 작업이 없는 사람도 최종 결과에 나타날 수 있습니다.
다음 쿼리는 LEFT JOIN을 구현합니다.
<code class="language-sql">SELECT t1.ks, t1.[# Tasks], COALESCE(t2.[# Late], 0) AS [# Late] FROM (SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks) t1 LEFT JOIN (SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks) t2 ON (t1.ks = t2.ks);</code>
COALESCE 함수는 [# Late]에서 잠재적인 NULL 값을 처리하여 0 값이 반환되도록 합니다. 그러면 원하는 출력 테이블이 생성됩니다.
<code>KS # Tasks # Late person1 7 1 person2 3 1 person3 2 0 </code>
위 내용은 작업 수와 지연 작업 수를 표시하기 위해 두 개의 SELECT 문을 단일 쿼리로 결합하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!