Group byの使い方
2891 ワード
sqlでクエリーをグループ化する場合は、一般的にgroupby文を使用しますが、groupby文を上手に使用するには、以下の点に分けてまとめます. Group byと集約関数 Group byとHaving 注意すべき点 Group byと集約関数
groupbyは一般的に集約関数とともに使用されます.これはgroupby以降、結果セットが複数のパケットになり、各パケットに複数のレコードが含まれる可能性があるため、各パケットに対して操作するには、複数のレコードに作用する集約関数を使用する必要があります.たとえば、次の例ではgroupbyと集約関数を使用して各PNRの合計レコード数をクエリーします.sql文は次のようになります.
グループをフィルタリングする場合は?どのように実現するか、引き続き下を見てください.
Group byとHaving
グループ化された結果をフィルタするには、having文を使用します.次の例を見てください.コードは次のとおりです.
注意すべき点
groupbyの使用については、特に注目すべき点がいくつかあります. select文で指定されたフィールドはgroupby文にグループ化の根拠として含まれるか、またはグループ化の根拠として含まれる.集約関数(count,sumなど)に含まれるかのいずれかです. whereとhavingの違いに注意してください.whereはパケットの前に結果セットをフィルタリングし、havingはgroupbyパケットの後の結果セットをフィルタリングします.
参考資料 SQLでのGroup Byの使用 sql groupbyとhavingの使い方 SQLチュートリアルのGroup byとHavingに深く入り込む
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の使用については、特に注目すべき点がいくつかあります.
参考資料