ホームページ  >  記事  >  データベース  >  システムは、SQL での Group By の使用法と、Group By の複数のフィールドに対する制限を整理します。

システムは、SQL での Group By の使用法と、Group By の複数のフィールドに対する制限を整理します。

php是最好的语言
php是最好的语言オリジナル
2018-08-03 17:06:5724497ブラウズ

SQL で Group By を使用する場合は?この記事では、Group By の使い方を詳しく説明します。その簡単な定義は、「データ セット」をいくつかの「小さな領域」に分割し、いくつかの「小さな領域」に対してデータ処理を実行することです。 Group By の Select で指定されたフィールドに対する制限は何ですか? apache php mysql

1. 概要

「Group By」とは文字通り、「By」で指定されたルールに従ってデータをグループ化することを意味し、いわゆるグループ化は「データセット」をいくつかの「小さな領域」に分割することです。次に、いくつかの「小さな領域」に対してデータ処理を実行します。

2. 元のテーブル

3. 単純なグループ化

例 1

select 类别, sum(数量) as 数量之和
from A
group by 类别

返される結果は次のテーブルで、実際にはカテゴリごとにまとめられています。

4、Group ByとOrder By

例2

select 类别, sum(数量) AS 数量之和
from A
group by 类别
order by sum(数量) desc

返される結果は以下の通りです

「数量の合計による並べ替え」はAccessでは使用できませんが、 SQLサーバー 。

5. Group By の Select で指定したフィールド制限

例 3

select 类别, sum(数量) as 数量之和, 摘要
from A
group by 类别
order by 类别 desc

例 3 を実行すると、以下に示すようにエラーが表示されます。これは、select で指定したフィールドをグループ化の基礎として Group By ステートメントの後に含めるか、集計関数に含める必要があることに注意してください。

6. すべてでグループ化

例 4

select 类别, 摘要, sum(数量) as 数量之和
from A
group by all 类别, 摘要

例 4 では、「概要」フィールドを指定できるのは、「複数列のグループ化」に「概要フィールド」が含まれているためです。結果は以下の通りです

「複数列のグループ化」は、実際には複数の列(カテゴリ+概要)の結合値をグループ化します。例4では、「a, a2001, 13」が「a,」であることがわかります。 a2001, 11」と 2 つのレコード「a, a2001, 2」をマージします。

「全員によるグループ化」は SQL Server でサポートされていますが、新しい開発作業での GROUP BY ALL の使用を避けるために、GROUP BY ALL は Microsoft SQL Server の将来のバージョンでは削除される予定です。 Access は "Group By All" をサポートしていませんが、SQL Server の上記の SQL は Access で

select 类别, 摘要, sum(数量) AS 数量之和
from A
group by 类别, 摘要

7 として記述できます。例 3 で説明されています。 by ステートメントの select で指定されたフィールドは、「フィールドによるグループ化」である必要があります。他のフィールドを select に含める場合は、それらのフィールドを集約関数に含める必要があります。

サポートされている性別

sum(列名)summax(列名)最大値min(列名)最小値avg(列名)averagefirst(列名)firstレコードAccessのみがサポートlast(列名)最後のレコードAccess のみがサポートcount (列名)レコードの数count(*)との違いに注意してください

示例5:求各组平均值

select 类别, avg(数量) AS 平均值 from A group by 类别;

示例6:求各组记录数目

select 类别, count(*) AS 记录数 from A group by 类别;

示例7:求各组记录数目

8、Having与Where的区别

  • where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。

  • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

示例8

select 类别, sum(数量) as 数量之和 from A
group by 类别
having sum(数量) > 18

示例9:Having和Where的联合使用方法

select 类别, SUM(数量)from A
where 数量 gt;8
group by 类别
having SUM(数量) gt; 10

9、Compute 和 Compute By

select * from A where 数量 > 8

执行结果:

示例10:Compute

select *
from A
where 数量>8
compute max(数量),min(数量),avg(数量)

执行结果如下:

compute子句能够观察“查询结果”的数据细节或统计各列数据(如例10中max、min和avg),返回结果由select列表和compute统计结果组成。

示例11:Compute By

select *
from A
where 数量>8
order by 类别
compute max(数量),min(数量),avg(数量) by 类别

执行结果如下:

示例11与示例10相比多了“order by 类别”和“... by 类别”,示例10的执行结果实际是按照分组(a、b、c)进行了显示,每组都是由改组数据列表和改组数统计结果组成,另外:

  • compute子句必须与order by子句用一起使用

  • compute...by与group by相比,group by 只能得到各组数据的统计结果,而不能看到各组数据

在实际开发中compute与compute by的作用并不是很大,SQL Server支持compute和compute by,而Access并不支持

相关文章:

sql group by 语句用法

sql group by语法与实例

相关视频:

SQL趣味课堂

以上がシステムは、SQL での Group By の使用法と、Group By の複数のフィールドに対する制限を整理します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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