ホームページ >データベース >mysql チュートリアル >SQLで各グループの最初の行を選択するにはどうすればよいですか?

SQLで各グループの最初の行を選択するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-22 06:05:08759ブラウズ

How to Select the First Row of Each Group in SQL?

SQL の各グループの最初の行を選択します

データベース管理では、分析やレポート作成のために特定のデータセットを取得することが必要になることがよくあります。これには、テーブル内の各レコード グループの最初の行を選択することが含まれます。

2 つのテーブルがあるとします。

  • SM_Employee (従業員 ID、役割 ID、ストア ID)
  • SM_SalesRepWorkflow (ワークフロー ID、SalesRepID、割り当てられた数量、残りの数量、月、年)

質問:

あなたのタスクは、現在の月と年の SM_SalesRepWorkflow テーブル内の各営業担当者 (SalesRepId) の詳細の最初の行を選択することです。

解決策:

これには、SQL で ROW_NUMBER() 関数を使用できます。

<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
) AS subquery
WHERE rownumber = 1;</code>

説明:

  • 外側のクエリは、各レコードに行番号を割り当て、SalesRepId 列で分割し、ワークフロー ID で昇順に並べ替えます。
  • WHERE 句は、各 SalesRepId の最初のレコードのみを含むように結果をフィルターします。

このクエリは、指定された月と年の各営業担当者のレコードの最初の行を効果的に識別します。問題ステートメントに示すように、簡潔な出力が提供されます:

  • WF_101 : EMP_101 : 100 : 90 : 5 月 : 2013
  • WF_101 : EMP_102 : 100 : 100 : 5 月 : 2013
  • WF_101 : EMP_103 : 100 : 80 : 5 月 : 2013

ROW_NUMBER() 関数を適用すると、テーブル内の各グループのデータの最初の行を効率的に取得し、必要なパラメータに基づいてさらに分析したりレポートしたりできます。

以上がSQLで各グループの最初の行を選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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