ホームページ >データベース >mysql チュートリアル >2 つの SELECT ステートメントを 1 つのクエリに結合して、タスク数と遅延タスク数を表示するにはどうすればよいですか?

2 つの SELECT ステートメントを 1 つのクエリに結合して、タスク数と遅延タスク数を表示するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-08 22:46:43573ブラウズ

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

SELECT ステートメントの結果を単一のクエリに結合します

データベースを操作する場合、複数のデータ ソースからのデータを組み合わせて分析することは非常に有益です。ただし、これを達成するには課題が生じる場合があります。この例では、2 つの別々の SELECT ステートメントがあり、それぞれがタスク データベースから特定の情報を取得します。

最初の SELECT ステートメントは、各個人に割り当てられたタスクの数をカウントします。

<code class="language-sql">SELECT ks, COUNT(*) AS '# Tasks'
FROM Table
GROUP BY ks</code>

2 番目の SELECT ステートメントは、各個人の期限を過ぎたタスク (年齢が Palt を超えているタスク) の数を特定します。

<code class="language-sql">SELECT ks, COUNT(*) AS '# Late'
FROM Table
WHERE Age > Palt
GROUP BY ks</code>

私たちの目標は、これら 2 つのクエリの結果を、各ユーザーの識別子 (ks)、各ユーザーが持つタスクの総数 (# Tasks)、および各ユーザーが持つ期限を過ぎたタスクの数 (# Late) を含むテーブルに結合することです。カラム。

これを実現する 1 つの方法は、JOIN 操作を使用することです。具体的には、LEFT JOIN を使用すると、結合キー (ks) が一致する場合に、最初のテーブル (t1) のすべての行と 2 番目のテーブル (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>

以上が2 つの SELECT ステートメントを 1 つのクエリに結合して、タスク数と遅延タスク数を表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。