logo

SQL グループ BY

SQL GROUP BY 句は、1 つ以上の列に基づいて同一のデータをグループに配置するために使用されます。通常、COUNT() SUM() AVG() MAX() および MIN() などの集計関数とともに使用され、データの各グループに対して計算を実行します。

果物のイメージ' title=

例: まず最初に 作成する GROUP BY コマンドを使用するデモ SQL データベースとテーブル。

従業員' loading='lazy' title=

クエリ:



SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;

出力:

SQL 日付順
クエリごとのグループ化' loading='lazy' title=

構文:

SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;
  • 集計関数: 集計に使用される関数 例: SUM() AVG() COUNT()。
  • テーブル名: データが選択されるテーブルの名前。
  • 状態: グループ化する前に行をフィルタリングするためのオプションの条件 (WHERE とともに使用)。
  • 列1 列2: グループ化が適用される列。

GROUP BYの例

Student テーブルがあると仮定しましょう。このテーブルにサンプル データを挿入し、GROUP BY を使用して操作を実行して、列に基づいて行をグループ化し、データを集計する方法を理解します。

グループ' loading='lazy' title=

例 1: 単一列によるグループ化

単一の列でグループ化すると、その列に同じ値を持つ行が結合されます。たとえば、科目ごとにグループ化すると、各科目に登録している学生の数が表示されます。

クエリ:

マドゥバラ
SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;

出力:

グループ-1' loading='lazy' title=

説明: 各科目は表に 2 回出現するため、英語の数学と科学のカウントは 2 です。

例 2: 複数の列によるグループ化

複数の列で GROUP BY を使用すると、それらの列で同じ値を共有する行がグループ化されます。たとえば、科目と学年でグループ化すると、同じ科目と年のペアの行が結合され、各グループに分類される学生の数をカウントできます。

クエリ:

SELECT subject year COUNT(*) FROM Student GROUP BY subject year;

出力:

学生グループ' loading='lazy' title=

説明: 同じ科目、同じ学年の学生がグループ化されます。各被験者と年のペアは 2 回出現するため、各グループのカウントは 2 になります。

GROUP BY 句の HAVING 句

HAVING 句は、特に SUM() COUNT() や AVG() などの集計関数を使用する場合に、グループ化後に結果をフィルタリングするために使用されます。 WHERE とは異なり、グループ化されたデータに条件を適用します。

従業員' loading='lazy' title=

例 1: 給与総額によるフィルター

このクエリでは、従業員を名前でグループ化し、給与の合計が 50000 を超える従業員のみを表示します。

SELECT NAME SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>50000; 

出力

マップC++で見つける
1歳' loading='lazy' title=

説明 : 給与総額が 50000 を超える従業員のみが結果に表示されます。

例 2: 平均給与によるフィルター

このクエリでは、従業員を年齢別にグループ化し、平均給与が 60000 を超える年齢グループのみを表示します。

SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;

出力:

出力-1' loading='lazy' title=

説明: このクエリは、従業員を年齢ごとにグループ化し、年齢ごとの平均給与を計算します。平均給与が 60000 を超える年齢グループのみが表示されます。

クイズの作成