ホームページ >データベース >mysql チュートリアル >SQL で各営業担当者の最初のワークフローを取得するにはどうすればよいですか?

SQL で各営業担当者の最初のワークフローを取得するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-22 06:09:12331ブラウズ

How to Retrieve the First Workflow for Each Sales Representative in SQL?

各営業担当者の初期ワークフローの取得

この SQL クエリは、現在の月および年の内の各営業担当者の最初のワークフロー レコードを効率的に取得します。 データは、SM_EmployeeSM_SalesRepWorkflow の 2 つのテーブルから取得されます。

このソリューションでは、ROW_NUMBER() ウィンドウ関数を利用します。この関数は、指定された順序 (ここでは workflowid) に基づいて、定義されたパーティション内の各行 (この場合は各営業担当者) に一意のランクを割り当てます。

SQL クエリは次のとおりです:

<code class="language-sql">SELECT *
FROM (
    SELECT 
        workflowid, 
        salesRepId, 
        quantityAssigned, 
        quantityLeft, 
        month, 
        year,
        ROW_NUMBER() OVER (PARTITION BY salesRepId ORDER BY workflowid) AS rownumber
    FROM SM_SalesRepWorkflow
) ranked_workflows
WHERE rownumber = 1;</code>

このクエリは、まず、workflowid の順序で各営業担当者の各ワークフローに行番号を割り当てます。 次に、外側のクエリはこの結果セットをフィルター処理して、rownumber = 1 を持つ行のみを選択し、各 salesRepId.

の最初のワークフローを効果的に返します。

データと結果の例:

SM_SalesRepWorkflow からのこのサンプル データを指定すると、

Workflowid SalesRepId QuantityAssigned QuantityLeft Month Year
WF_101 EMP_101 100 90 May 2013
WF_102 EMP_101 100 70 May 2013
WF_101 EMP_102 100 100 May 2013
WF_101 EMP_103 100 80 May 2013

クエリは次を返します:

Workflowid SalesRepId QuantityAssigned QuantityLeft Month Year
WF_101 EMP_101 100 90 May 2013
WF_101 EMP_102 100 100 May 2013
WF_101 EMP_103 100 80 May 2013

これは、各営業担当者の最初のワークフローを正確に反映しています。 このアプローチでは、workflowid が「最初の」ワークフローを決定するための意味のある順序付けを提供することを前提としていることに注意してください。 別の順序が必要な場合は、それに応じて ORDER BY 句を調整します。

以上がSQL で各営業担当者の最初のワークフローを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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