Group byの使い方

2891 ワード

sqlでクエリーをグループ化する場合は、一般的にgroupby文を使用しますが、groupby文を上手に使用するには、以下の点に分けてまとめます.
  • Group byと集約関数
  • Group byとHaving
  • 注意すべき点
  • Group byと集約関数
    groupbyは一般的に集約関数とともに使用されます.これはgroupby以降、結果セットが複数のパケットになり、各パケットに複数のレコードが含まれる可能性があるため、各パケットに対して操作するには、複数のレコードに作用する集約関数を使用する必要があります.たとえば、次の例ではgroupbyと集約関数を使用して各PNRの合計レコード数をクエリーします.sql文は次のようになります.
    1 -- 1,Group by     
    2 --     PNR     
    3 SELECT NewPNR,COUNT(*) FROM dbo.RemoteSession
    4 GROUP BY NewPNR;

    グループをフィルタリングする場合は?どのように実現するか、引き続き下を見てください.
    Group byとHaving
    グループ化された結果をフィルタするには、having文を使用します.次の例を見てください.コードは次のとおりです.
    1 -- 2,Group by Having
    2 --       >1(       ) PNR
    3 SELECT NewPNR,COUNT(*) FROM dbo.RemoteSession
    4 GROUP BY NewPNR
    5 HAVING COUNT(*)>1;

    注意すべき点
    groupbyの使用については、特に注目すべき点がいくつかあります.
  • select文で指定されたフィールドはgroupby文にグループ化の根拠として含まれるか、またはグループ化の根拠として含まれる.集約関数(count,sumなど)に含まれるかのいずれかです.
  • whereとhavingの違いに注意してください.whereはパケットの前に結果セットをフィルタリングし、havingはgroupbyパケットの後の結果セットをフィルタリングします.

  • 参考資料
  • SQLでのGroup Byの使用
  • sql groupbyとhavingの使い方
  • SQLチュートリアルのGroup byとHavingに深く入り込む