一般的にどちらを使用しますか?例を強くお勧めします!
私はそうMySQLを参照していますが、別のDBMSで概念が異なることを想像することはできません
ORDER BYは、アイテムが返される順序を変更します。
GROUP BYは、指定された列でレコードを集計します。これにより、グループ化されていない列(SUM、COUNT、AVGなど)で集計関数を実行できます。
ORDER BYは、アイテムが返される順序を変更します。
GROUP BYは、指定された列でレコードを集計します。これにより、グループ化されていない列(SUM、COUNT、AVGなど)で集計関数を実行できます。
TABLE:
ID NAME
1 Peter
2 John
3 Greg
4 Peter
SELECT *
FROM TABLE
ORDER BY NAME
=
3 Greg
2 John
1 Peter
4 Peter
SELECT Count(ID), NAME
FROM TABLE
GROUP BY NAME
=
1 Greg
1 John
2 Peter
SELECT NAME
FROM TABLE
GROUP BY NAME
HAVING Count(ID) > 1
=
Peter
ORDER BY:データを昇順または降順に並べ替えます。
CUSTOMERSテーブルを考慮してください:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
以下は、結果をNAMEで昇順で並べ替える例です。
SQL> SELECT * FROM CUSTOMERS
ORDER BY NAME;
これにより、次の結果が生成されます。
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
GROUP BY:同一のデータをグループに配置します。
現在、CUSTOMERSテーブルには、重複した名前を持つ以下のレコードがあります。
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
同じ名前を1つの名前にグループ化する場合、GROUP BYクエリは次のようになります。
SQL> SELECT * FROM CUSTOMERS
GROUP BY NAME;
これにより、次の結果が生成されます。(同じ名前の場合、最後の名前が選択され、最終的に列が昇順でソートされます)
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
+----+----------+-----+-----------+----------+
あなたがsum、avgなどのようなSQL関数なしでは役に立たないと推測したように。
gROUP BYの適切な使用方法を理解するには、この定義を確認してください。
GROUP BY句は、COUNT()、SUMなどのSELECTリストで適切なAggregate関数を使用して、同一の行を単一/個別のグループにまとめ、各グループの概要を含む単一の行を返すことにより、クエリによって返された行に対して機能します()、MIN()、MAX()、AVG()など.
ここで、各顧客(名前)の給与の合計額を知りたい場合、GROUP BYクエリは次のようになります。
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
これにより、次の結果が生成されます。(同じ名前の給与の合計で、同じ名前を削除した後、NAME列をソートします)
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+
違いは、名前が示すとおりです。つまり、group byはグループ化操作を実行し、order byは並べ替えを実行します。
SELECT * FROM Customers ORDER BY Name
を実行すると、顧客名でソートされた結果リストを取得します。
SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive
を実行すると、アクティブな顧客と非アクティブな顧客の数が得られます。グループは、指定したフィールドに基づいて結果を集計しました。
単純なORDER BY
は、データとGROUP BY
グループを順序付けるか、データを結合します。
ORDER BY
は、言及されたフィールドに従って、デフォルトで昇順で結果セットを順序付けます。
ORDER BY (student_roll_number)
としてクエリを実行していると仮定すると、生徒のロール番号の昇順で結果が表示されます。ここでは、student_roll_number
エントリが複数回発生する場合があります。
GROUP BY
の場合、これを集計関数で使用し、集計関数ごとにデータをグループ化し、結果を取得します。ここで、クエリにSUM (marks)
とGROUP BY (student_first_name)
が含まれている場合、各グループに属する学生のマークの合計が表示されます(グループのすべてのメンバーの名前は同じです)。
GROUP BYは、通常、行を集計する(たとえば、一部のフィールドで同じ値を持つ行のセットの合計、平均などを計算する)ときに、選択で行をグループ化するために使用されます。
ORDER BYは、selectステートメントの結果の行の順序付けに使用されます。
ORDER BY
は、フィールドを昇順または降順で表示します。 GROUP BY
は同じフィールド名、idなどを1つの出力にのみ表示します。
GROUP BY
は必ずしも必要ではありません(少なくともPostgreSQLでは、おそらく他のSQLバリアントでは)リストでORDER BY
を使用できますand使用できるのは引き続きASC
またはDESC
per column ...
SELECT name_first, name_last, dob
FROM those_guys
ORDER BY name_last ASC, name_first ASC, dob DESC;