大量のデータが存在する場合、要件に従ってデータを操作する可能性がよくあります。 GROUP BY句は、SQLのそのようなステートメントの1つであり、いくつかの列または条件に基づいてデータをグループ化するために使用されます。 SQL GROUP BYステートメントに関するこの記事では、GROUPBYステートメントを次の順序で使用するいくつかの方法について説明します。
- GROUPBYステートメント
- 構文
- 例:
- 単一の列でGROUPBYを使用する
- 複数の列のGROUPBY
- ORDERBYでGROUPBYを使用する
- HAVING句を使用したGROUPBY
- JOINSでGROUPBYを使用する
GROUP BY句の使用方法の例に進む前に、SQLでのGROUPBYとその構文について理解しましょう。
SQLGROUPBYステートメント
このステートメントは、同じ値を持つレコードをグループ化するために使用されます。 GROUP BYステートメントは、結果を1つ以上の列でグループ化するために、集計関数でよく使用されます。これとは別に、GROUP BY句はHAVING句およびJOINSとともに使用され、条件に基づいて結果セットをグループ化します。
SQLGROUPBY構文
SELECT Column1, Column2,..., ColumnN FROM TableName WHERE Condition GROUP BY ColumnName(s) ORDER BY ColumnName(s);
ここでは、列名の前に集計関数を追加したり、ステートメントの最後に条件を指定するHAVING句を追加したりできます。次に、SQL GROUP BYに関するこの記事で、このステートメントの実装方法を理解しましょう。
例:
理解を深めるために、例を次のセクションに分けました。
-
- 単一の列でGROUPBYを使用する
- 複数の列のGROUPBY
- ORDERBYでGROUPBYを使用する
- HAVING句を使用したGROUPBY
- JOINSでGROUPBYを使用する
例を説明するために、次の表を検討します。
EmpID | EmpName | EmpEmail | PhoneNumber | 給与 | 都市 |
1 | Nidhi | 9955669999 | 50000 | ムンバイ | |
2 | Anay | 9875679861 | 55000 | Pune | |
3 | Rahul | 9876543212 | 35000 | デリー | |
4 | ソニア | 9876543234 | 35000 | デリー | |
5 | Akash | 9866865686 | 25000 | ムンバイ |
それぞれを見てみましょう。
単一の列でSQLGROUPBYを使用する
例:
各都市の従業員数を取得するためのクエリを記述します。
SELECT COUNT(EmpID), City FROM Employees GROUP BY City;
出力:
次の出力が表示されます:
Count(EmpID) | 都市 |
2 | デリー |
2 | ムンバイ |
1 | プネ |
複数の列でSQLGROUPBYを使用する
例:
各都市で給与が異なる従業員の数を取得するクエリを記述します。
SELECT City, Salary, Count(*) FROM Employees GROUP BY City, Salary;
出力:
テーブルには次のデータが含まれます:
都市 | 給与 | Count(*) |
デリー | 35000 | 2 |
ムンバイ | 25000 | 1 |
ムンバイ | 50000 | 1 |
プネ | 55000 | 1 |
ORDERBYでSQLGROUPBYを使用する
SQL GROUPBYステートメントをORDERBY句とともに使用すると、値は昇順または降順で並べ替えられます。
例:
各都市の従業員数を降順で並べ替えて取得するクエリを記述します。
SELECT COUNT(EmpID), City FROM Employees GROUP BY City ORDER BY COUNT(EmpID) DESC;
出力:
テーブルには次のデータが含まれます:
Count(EmpID) | 都市 |
2 | デリー |
2 | ムンバイ |
1 | プネ |
HAVING句でSQLGROUPBYを使用する
SQL GROUP BYステートメントは、グループの条件を示すために「HAVING」句とともに使用されます。また、WHERE句で集計関数を使用することはできないため、GROUP BYで集計関数を使用するには、「HAVING」句を使用する必要があります。
例:
給与が15000を超える、各都市の従業員数を取得するクエリを記述します
SELECT COUNT(EmpID), City FROM Employees GROUP BY City HAVING SALARY > 15000;
出力:
すべてがEmployeeテーブルのレコードであり、給与が15000を超えているため、次のテーブルが出力として表示されます。
Count(EmpID) | 都市 |
2 | デリー |
2 | ムンバイ |
1 | プネ |
JOINSでGROUPBYを使用する
JOINSは、2つ以上のテーブルの関連する列に基づいて、それらのテーブルの行を結合するために使用されるSQLステートメントです。 SQL GROUP BYステートメントを使用して、1つまたは複数の列に基づいて結果セットをグループ化できます。以下の表を考慮して、SQLGROUPBY句を使用してJOINステートメントを実行してください。
プロジェクトテーブル:
ProjectID | EmpID | ClientID | ProjectDate |
2345 | 1 | 4 | 2019年1月26日 |
9876 | 2 | 5 | 2019年2月28日 |
3456 | 3 | 6 | 2019年12月3日 |
クライアントテーブル:
ClientID | ClientName |
4 | Sanjana |
5 | ローハン |
6 | アルン |
例
各クライアントから要求されたプロジェクトの数を一覧表示するクエリを作成します。
SELECT Clients.ClientName, COUNT(Projects.ProjectID) AS RequestedProjects FROM Projects LEFT JOIN Clients ON Projects.ProjectID = Clients.ProjectID GROUP BY ClientName;
出力:
テーブルには次のデータが含まれます:
ClientName | RequestedProjects |
アルン | 1 |
ローハン | 1 |
Sanjana | 1 |
これで、SQLGROUPBYの記事は終わりです。 これをチェックしてください MySQLDBA認定トレーニング ネットワークを備えた信頼できるオンライン学習会社であるEdurekaによる 25万人以上の満足した学習者が世界中に広がっています。 このコースでは、データを管理し、MySQLデータベースを管理するためのコアコンセプトと高度なツールおよびテクニックについてトレーニングします。これには、MySQL Workbench、MySQLサーバー、データモデリング、MySQLコネクタ、データベースデザイン、MySQLコマンドライン、MySQL関数などの概念に関する実践的な学習が含まれます。トレーニングの終わりに、独自のMySQLデータベースを作成および管理できるようになります。データを管理します。
質問がありますか?この「SQLGROUPBY」の記事のコメントセクションにその旨を記載してください。できるだけ早くご連絡いたします。