>데이터 베이스 >MySQL 튜토리얼 >작업 수와 지연 작업 수를 계산하기 위해 여러 SQL SELECT 문을 결합하는 방법은 무엇입니까?

작업 수와 지연 작업 수를 계산하기 위해 여러 SQL SELECT 문을 결합하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-08 22:29:44161검색

How to Combine Multiple SQL SELECT Statements to Count Tasks and Late Tasks?

여러 SQL SELECT 문 결합: 실제 예

이 가이드에서는 여러 SQL SELECT 문의 결과를 하나의 포괄적인 테이블로 효율적으로 결합하는 방법을 보여줍니다. 작업 관리 데이터베이스를 예로 사용하겠습니다. 각 작업 기록에는 마감일, 마감일까지의 일수(PALT), 연령(생성 이후 일수)과 같은 세부 정보가 포함됩니다. 목표는 각 개인의 총 작업 수와 기한이 지난 작업 수를 보여주는 보고서를 생성하는 것입니다.

총 작업과 지연 작업을 계산하는 개별 쿼리는 다음과 같습니다.

<code class="language-sql">SELECT ks, COUNT(*) AS "Total Tasks" FROM Table GROUP BY ks;</code>
<code class="language-sql">SELECT ks, COUNT(*) AS "Overdue Tasks" FROM Table WHERE Age > Palt GROUP BY ks;</code>

이러한 결과를 병합하려면 LEFT JOIN을 사용합니다. 이렇게 하면 기한이 지난 작업이 없더라도 총 작업 수에 모든 사람이 포함됩니다.

<code class="language-sql">SELECT t1.ks, t1."Total Tasks", COALESCE(t2."Overdue Tasks", 0) AS "Overdue Tasks"
FROM 
    (SELECT ks, COUNT(*) AS "Total Tasks" FROM Table GROUP BY ks) t1
LEFT JOIN
    (SELECT ks, COUNT(*) AS "Overdue Tasks" FROM Table WHERE Age > Palt GROUP BY ks) t2
ON t1.ks = t2.ks;</code>

COALESCE 함수는 사람에게 기한이 지난 작업이 없는 경우(결과적으로 NULLLEFT JOIN가 됨)를 처리하며 명확성을 위해 NULL를 0으로 바꿉니다. 마지막 테이블에는 ks(개인 ID), "총 작업" 및 "기한이 지난 작업"이 표시됩니다. LEFT JOIN은 기한이 지난 작업이 있는지 여부에 관계없이 모든 개인이 나열되도록 합니다.

위 내용은 작업 수와 지연 작업 수를 계산하기 위해 여러 SQL SELECT 문을 결합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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