web-dev-qa-db-ja.com

集計関数のないGROUPBY句の理由は何ですか?

私は現在SQLを(徹底的に)学んでいて、GROUP BYclauseに出くわしました。

GROUP BYは、指定した引数に従って結果セットを集約またはグループ化します。クエリでこの句を使用すると、結果セットで集計関数を実行して、平均(AVG())や頻度(COUNT())などの結果セットの統計情報を見つけることができます。

私の質問は次のとおりです。GROUPBYステートメントは、集計関数を伴わずに何らかの形で役立ちますか?

pdateGROUP BYDISTINCTの同義語として使用することは、遅いと思われるため、(おそらく)悪い考えです。

22
Niels Bom

gROUP BYステートメントは、集計関数を伴わずに何らかの形で役立ちますか?

このような状況では、DISTINCTを使用することは同義語ですが、GROUP BY句を定義する必要がある理由は、HAVING句を定義できるようにするためです。詳細。

HAVING句を定義する必要がある場合は、haveGROUP BY-を定義します。 DISTINCTと組み合わせて実行することはできません。

13
OMG Ponies

[〜#〜] distinct [〜#〜] selectを実行するには、GROUP BYを使用します。[〜#〜]集計[〜# 〜]

6
Adriaan Stander

Group byは双方向主に使用できます
1)in conjunction SQL集計関数を使用
2)to eliminate結果セットから重複する行

したがって、あなたの質問に対する答えは、上記のUSEの2番目の部分にあります。

6
Ashish Agarwal

注:以下のすべてはMySQLにのみ適用されます

GROUP BY is guaranteed 結果を順番に返すために、DISTINCTはそうではありません。

GROUP BYORDER BY NULLは、DISTINCTと同じ効率です(そして、言うように実装されています)。集約(または識別)されているフィールドにインデックスがある場合、両方の句でこのフィールドに対してルーズインデックススキャンが使用されます。

GROUP BYでは、グループ化されていない式と集約されていない式を返すことができます。 MySQLは、対応するグループから任意のランダムな値を選択して、式を計算します。

GROUP BYを使用すると、SELECT句からGROUP BY式を省略できます。 DISTINCTでは、できません。 DISTINCTによって返されるすべての行は、一意であることが保証されています。

1
Quassnoi