ホームページ >データベース >mysql チュートリアル >SQL で各営業担当者の最初のワークフローを取得するにはどうすればよいですか?
各営業担当者の初期ワークフローの取得
この SQL クエリは、現在の月および年の内の各営業担当者の最初のワークフロー レコードを効率的に取得します。 データは、SM_Employee
と SM_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 サイトの他の関連記事を参照してください。