回答:
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
age列があり、Petersの年齢が異なり、クエリがSELECT NAME、AGE FROM TABLE GROUP BY NAMEの場合はどうなりますか?
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 |
+----+----------+-----+-----------+----------+
同じ名前を単一の名前にグループ化する場合、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()など
ここで、各customer(name)の給与の総額を知りたい場合、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 |
+---------+-------------+
違いは、名前が示すとおりです。グループ化はグループ化操作を実行し、並べ替えは順序付けを行います。
あなたが行う場合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)いる場合、各グループに属する学生のマークの合計が表示されます(グループのすべてのメンバーは同じ名になります)。
いくつかの良い例があります。良い明確な例を提供するwebcheatsheetから独自のSQLを実行できるようにするだけでなく、独自のSQLを追加するのと同じです。
ORDER BY昇順または降順でフィールドを表示します。一方GROUP BY、同じフィールド名、IDなどが1つの出力にのみ表示されます。