>데이터 베이스 >MySQL 튜토리얼 >작업 수와 지연 작업 수를 표시하기 위해 두 개의 SELECT 문을 단일 쿼리로 결합하려면 어떻게 해야 합니까?

작업 수와 지연 작업 수를 표시하기 위해 두 개의 SELECT 문을 단일 쿼리로 결합하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-08 22:46:43623검색

How Can I Combine Two SELECT Statements into a Single Query to Show Task Counts and Late Task Counts?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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