SQLにおけるGroup Byの使用教程を詳しく説明する。


1、概要
「Group By」は文字どおり、「By」で指定された規則に従ってデータをパケット化することであり、パケットとは、一つの「データセット」をいくつかの「小領域」に分割し、いくつかの「小領域」に対してデータ処理を行うことである。
2、原始表

3、シンプルグループBy例1

select   , sum(  ) as     from Agroup by   
結果は下表のようになりますが、実は小計です。

4、Group ByとOrder By例2

select   , sum(  ) AS     from Agroup by   order by sum(  ) desc
戻り結果は下表のとおりです。

Accessでは「order by数量の和desc」は使えませんが、SQL Serverでは大丈夫です。
5、Group ByでSelectが指定するフィールド制限例3

select   , sum(  ) as     ,   from Agroup by   order by    desc
例3を実行するとエラーが提示されます。これは注意すべき点であり、selectで指定されたフィールドは、グループ化されたBy文の後に含まれるか、グループ化の根拠として使用される。集合関数に含めるかどうか。

6、Group By Allの例4

select   ,   , sum(  ) as     from Agroup by all   ,   
例4では、「要約」フィールドを指定できます。その理由は、「複数列パケット」に「要約フィールド」が含まれています。その結果は以下の表の通りです。

「複数列パケット」は、実際には複数列(カテゴリ+要約)の統合された値でグループ化されており、例4では「a,a 2001,13」は「a,a 2001,11」と「a,a 2001,2」の2つのレコードの統合が見られます。
SQL Serverでは「group by all」がサポートされているが、Microsoft SQL Serverの未来バージョンでは、GROUT BY ALLは削除されます。新たな開発作業でGROUT BY ALLは使用されないようにします。。Accessでは「Group By All」はサポートされていませんが、Accessでは同様に複数の列のパケットをサポートしています。上記SQL ServerのSQLはAccessで書くことができます。

select   ,   , sum(  ) AS     from Agroup by   ,   
7、Group Byと集計関数
例3でgroup by文においてselectで指定されたフィールドは「グループ化されたフィールド」でなければなりません。他のフィールドがselectに現れたいなら、集計関数に含める必要があります。一般的な統合関数は以下の表の通りです。
関数
作用
サポート
sum(列名)
和を乞う
    
max(列名)
最大値
    
min(列名)
最小値
    
avg(列名)
平均値
    
ファースト(列名)
最初のレコード
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 Agroup by   having sum(  ) > 18
    例9:HavingとWhereの併用方法
    
    select   , SUM(  )from Awhere    gt;8group by   having SUM(  ) gt; 10
    9、ComputeとCompute By
    
    select * from A where    > 8
    実行結果:

    例10:Compute
    
    select *from Awhere   >8compute max(  ),min(  ),avg(  )
    実行結果は以下の通りです。

    computサブ句は、「照会結果」のデータの詳細を観察したり、各列のデータ(例10ではmax、min、avg)を統計したりして、返却結果はselectリストとcomputteの統計結果からなります。
    例11:Commput By
    
    select *from Awhere   >8order by   compute max(  ),min(  ),avg(  ) by   
    実行結果は以下の通りです。

    例11は、例10と比較して「order byカテゴリ」と「…byカテゴリ」が多くなり、例10の実行結果は、実際にはパケット(a、b、c)に従って表示されており、各グループは、改組データリストと改組数統計結果から構成されている。
  • coputte子文はorder by子文と一緒に
  • を使用しなければなりません。
  • compute...byはgroup byに比べて、グループ毎のデータの統計結果しか得られず、各グループのデータ
  • を見ることができない。
    実際の開発では、computとcompute byの役割は大きくなく、SQL Serverはcomputeとcompute byをサポートしていますが、Accessはサポートしていません。
    締め括りをつける
    以上は小编がみんなに绍介する详しい解决SQLの中でGroup Byの使用教程で、みんなに対して助けがあることを望みます!