Web888.vn
  • Shop
  • Blog
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Micrsoft SQL Server
SQL Server GROUPBY句

SQL Server GROUPBY句

  • 12-09-2022
  • Toanngo92
  • 0 Comments

Mục lục

  • GroupBy.節
    • GROUP BY with WHERE
    • NULLを使用したGROUPBY
  • GROUP BY with ALL
    • HAVINGでGROUPBY
  • データの要約
    • CUBE
    • 巻き上げる

GroupBy.節

GROUP BY句は、結果セットを1つ以上のサブセットに分割します。各サブセットには、共通の値と式があります。 GROUP BYキーワードの後には、グループ化された列と呼ばれる列のリストが続きます。グループ化された各列は、結果セットの行数を制限します。グループ化された列ごとに、行は1つだけです。 GROUP BY句には、複数のグループ化された列を含めることができます。

構文:

SELECT select_list FROM table_name GROUP BY column_name1,column_name2, ... ;

AdventureWorks2019のWorkOrderRoutingテーブルのシナリオを考えてみましょう。各作業指示の合計リソース時間を計算する必要があります。これを実現するには、レコードをWorkOrderID列である作業指示番号でグループ化する必要があります。

以下の例では、各作業指示の合計リソース時間を取得して、作業指示番号とともに表示します。このクエリでは、SUM()という名前の組み込み関数を使用して合計を計算します。 SUM()は、列のレコードを合計する関数です。

SELECT WorkOrderID,SUM(ActualResourceHrs) AS TotalHoursPerWorkOrder FROM Production.WorkOrderRouting GROUP BY WorkOrderID

executeステートメントは、すべてのWorkOrdersと合計リソース時間を返します。

GROUP BY句は、次のような他の句と組み合わせて使用することもできます。

GROUP BY with WHERE

WHERE句をGROUPBY句とともに使用して、データグループ化の行を制限できます。検索条件を満たす行は、再グループ化の対象と見なされます。検索条件を満たさない行は、グループ化プロセスが完了する前に削除されます。

例えば:

SELECt WorkOrderID,SUM(ActualResourceHrs) AS TotalHoursPerWorkOrder FROM Production.WorkOrderRouting WHERE WorkOrderID < 50 GROUP BY WorkOrderID

NULLを使用したGROUPBY

グループ列にnullが含まれている場合、その行は結果セット内の個別のグループになります。グループ列に複数のNULL値が含まれている場合、NULL値は1つの行に含まれます。 Production.Productテーブルについて考えてみます。 Class列にNULL値がある行がいくつかあります。

テーブルクエリにGROUPBYを使用すると、NULL値も使用されます。たとえば、次のコードは、各クラスの定価の平均価格を取得して表示します

SELECT Class, AVG(ListPrice) AS 'AverageListPrice' FROM Production.Product GROUP BY Class

GROUP BY with ALL

ALLキーワードは、GROUPBY句とともに使用できます。 SELECTにWHERE句がある場合にのみ意味があります。 ALLを使用すると、GROUPBY句で作成されるすべてのグループが含まれます。検索条件を満たさないグループも含まれます。

構文:

SELECT <column_name> FROM <table_name> WHERE <condition> GROUP BY ALL <column_name>

Sales.SalesTerritoryテーブルについて考えてみます。このテーブルには、販売エリアの座標位置を示すGroupという名前の列があります。以下のコードは、各グループの総売上高を計算して表示します。出力には、売上があるかどうかに関係なく、すべてのグループを表示する必要があります。これを実現するために、コードはGROUPBYとALLを使用します

SELECT [Group], SUM(SalesYTD) AS 'TotalSales' FROM Sales.SalesTerritory WHERE [Group] LIKE 'N%' OR [Group] LIKE 'E%' GROUP BY ALL [Group]

HAVINGでGROUPBY

HAVING句はSELECTステートメントとともに使用され、グループの検索条件を指定します。 HAVING句は、SUM()などの集計関数に対してWHERE句を使用できない場所ではWHERE句のように機能します。 GROUP BY句を使用してグループを作成したら、結果をさらにフィルタリングすることをお勧めします。 HAVING句は、WHERE句がFROM句によって返される行のフィルタとして機能するのと同様に、行のフィルタとして機能します。

構文:

SELECT <column_name> FROM <table_name> GROUP BY <column_name> HAVING <search_condition>

例えば:

SELECT [Group],SUM(SalesYTD) AS 'TotalSales' FROM Sales.SalesTerritory WHERE [Group] LIKE 'P%' GROUP BY ALL [Group] HAVING SUM (SalesYTD) < 6000000

データの要約

GROUP BY句は、CUBE演算子とROLLUP演算子も使用して要約データを返します。 GROUP BY句の列数によって、結果セットのサマリー行の数が決まります。演算子の説明は次のとおりです。

CUBE

CUBEは、スーパーアグリゲート行を生成するアグリゲート演算子です。 GROUP BYによって提供される通常の行に加えて、GROUPBY句が生成する行の要約も提供します。

グループの可能なすべての組み合わせに対して表示される要約行は、結果セットです。概要行には結果セットにNULLが表示されますが、それらのすべての値が同時に返されます。

構文:

SELECT <column_name> FROM <table_name> GROUP BY <column_name> WITH CUBE

例えば:

このサービスは、オーストラリアとカナダを除く各国の総売上高を表示します

SELECT Name, CountryRegionCode, SUM(SalesYTD) AS TotalSales FROM Sales.SalesTerritory WHERE Name <> 'Australia' AND Name <> 'Canada' GROUP BY Name,CountryRegionCode WITH CUBE

CUBEは、GROUPBY句の拡張のようなものです。 CUBEを使用すると、GROUPBY句で指定されたすべてのグループ列の組み合わせを小計することができます。

巻き上げる

GROUP BYによって生成される通常の行に加えて、結果セットに要約行も挿入します。これはCUBE演算子に似ていますが、グループを階層順に表示する結果セットを生成します。グループを最低から最高にソートします。結果のグループ化階層は、グループ化された列が指定されている順序によって異なります。

構文:

SELECT <column_name1>[,<column_name2>] FROM <table_name> GROUP BY < WITH ROLLUP

例えば:

SELECT [Name], SUM(SalesYTD) AS TotalSales FROM Sales.SalesTerritory GROUP BY [Name] WITH ROLLUP

Bài viết liên quan:

SQL Serverのテーブル(テーブル)
データベースモデルの紹介、RDBMSコンセプトの紹介(関連データベース管理システム)
実体関連モデル(ERモデル)とデータの正規化(正規化)
AzureSQLの紹介
SQLServer2019のSQLの高度な機能
SQLServerのJSONデータ

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

MacOSにPHPを手動でインストールする

SQLServer2019のSQLの高度な機能

AzureSQLの紹介

SQLServerのJSONデータ

LinuxおよびUnixOSにPHPを手動でインストールする

Giới thiệu

web888.vn là chuyên trang chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với web888

© web888.vn - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.

Your personal data will be used to support your experience throughout this website, to manage access to your account, and for other purposes described in our privacy policy.

Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×