ホームページ >データベース >mysql チュートリアル >MSSQL Group By クエリで条件付き合計を実行するにはどうすればよいですか?
MSSQL の GROUP BY 句による条件付き合計
Microsoft SQL Server (MSSQL) は、GROUP BY
句を使用した柔軟なデータ集計を提供します。 GROUP BY
クエリ内で条件付き合計を実行するには、CASE
ステートメントを利用して、特定の基準に基づいて合計に値を選択的に含めます。
次の構造を持つ OrderDetails
テーブルを考えてみましょう:
<code>---------------------------------------------------------------- | OrderId | CopyCost | FullPrice | Price | PriceType | ---------------------------------------------------------------- | 16 | 50 | 100 | 50 | CopyCost | ---------------------------------------------------------------- | 16 | 50 | 100 | 100 | FullPrice | ---------------------------------------------------------------- | 16 | 50 | 100 | 50 | CopyCost | ---------------------------------------------------------------- | 16 | 50 | 100 | 50 | CopyCost | ----------------------------------------------------------------</code>
各 ItemCount
の TotalCopyCost
、TotalFullPrice
、OrderId
を計算するには、次のクエリを使用します。
<code class="language-sql">SELECT OrderId, COUNT(*) AS ItemCount, SUM(CASE WHEN PriceType = 'CopyCost' THEN Price ELSE 0 END) AS TotalCopyCost, SUM(CASE WHEN PriceType = 'FullPrice' THEN Price ELSE 0 END) AS TotalFullPrice FROM OrderDetails GROUP BY OrderId;</code>
CASE
関数内の SUM()
ステートメントは、条件付きで Price
値を合計します。 PriceType
が 'CopyCost' の場合、Price
が含まれます。それ以外の場合は 0 が追加されます。これにより、OrderId
ごとに「CopyCost」と「FullPrice」の合計を個別に計算できるようになります。
出力は次のようになります:
<code>---------------------------------------------------------------- | OrderId | ItemCount | TotalCopyCost | TotalFullPrice | ---------------------------------------------------------------- | 16 | 4 | 150 | 100 | ----------------------------------------------------------------</code>
これは、CASE
ステートメントが GROUP BY
クエリ内で強力な条件付き集計を可能にし、MSSQL でのデータの要約と分析のための柔軟な方法を提供する方法を示しています。
以上がMSSQL Group By クエリで条件付き合計を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。