sql >> データベース >  >> RDS >> Database

SQLでGROUPBY句を使用する方法

    このSQLの記事では、GROUPBY句とSQLでの使用方法について学習します。また、WHERE句でGROUPBY句を使用する方法についても説明します。

    GROUP BY句とは何ですか?

    GROUP BY句は、SQL関数を使用してグループ内の列の同じレコードを管理するためにSELECTステートメントで使用されるSQL句です。

    GROUP BY句の構文:

    SELECT columnname1, columnname2, columnname3 FROM tablename GROUP BY columnname;

    GROUPBY句のテーブルから複数の列を使用できます。

    いくつかの手順があります。SQLクエリでGROUPBY句を使用する方法を学ぶ必要があります。

    1。 USEキーワードに続けてデータベース名を使用してデータベースを選択することにより、新しいデータベースを作成するか、既存のデータベースを使用します。

    2。 選択したデータベース内に新しいテーブルを作成するか、作成済みのテーブルを使用できます。

    3。 テーブルが新しく作成された場合は、INSERTクエリを使用して新しく作成されたデータベースにレコードを挿入し、GROUPBY句を指定せずにSELECTクエリを使用して挿入されたデータを表示します。

    4。 これで、SQLクエリでGROUPBY句を使用する準備が整いました。

    ステップ1:新しいデータベースを作成するか、作成済みのデータベースを使用します。

    私はすでにデータベースを作成しました。既存の作成済みデータベース名Companyを使用します。

    USE Company;

    会社はデータベース名です。

    データベースを作成していない人は、以下のクエリに従ってデータベースを作成します。

    CREATE DATABASE database_name;

    データベースを作成したら、USEキーワードに続けてデータベース名を使用してデータベースを選択します。

    ステップ2:新しいテーブルを作成するか、既存のテーブルを使用します:

    すでにテーブルを作成しました。 Employeesという名前の既存のテーブルを使用します。

    新しいテーブルを作成するには、以下のCREATETABLE構文に従います。

    CREATE TABLE table_name(

    columnname1 datatype(column size),

    columnname2 datatype(column size),

    columnname3 datatype(column size)

    );

    ステップ3:INSERTクエリを使用して新しく作成されたテーブルにレコードを挿入し、SELECTクエリを使用してレコードを表示します。

    次の構文を使用して、テーブルに新しいレコードを挿入します。

    INSERT INTO table_name VALUES(value1, value2, value3);

    次の構文を使用して、テーブルのレコードを表示します。

    SELECT * FROM table_name;

    次のクエリは、従業員のレコードを表示します:

    SELECT * FROM Employees;

    上記のSELECTクエリの出力は次のとおりです。

    EMPLOYEEID FIRST_NAME LAST_NAME 給与 CITY 部門 MANAGERID
    1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
    1002 VAIBHAV シャルマ 60000 NOIDA C# 5
    1003 NIKHIL VANI 50500 ジャイプール FMW 2
    2001 PRACHI シャルマ 55500 チャンディーガル ORACLE 1
    2002 BHAVESH JAIN 65500 PUNE FMW 2
    2003 ルチカ JAIN 50000 ムンバイ C# 5
    3001 PRANOTI SHENDE 55500 PUNE JAVA 3
    3002 ANUJA WANRE 50500 ジャイプール FMW 2
    3003 DEEPAM ジャウハリ 58500 ムンバイ JAVA 3
    4001 RAJESH GOUD 60500 ムンバイ テスト 4
    4002 ASHWINI バガット 54500 NOIDA JAVA 3
    4003 ルチカ AGARWAL 60000 デリー ORACLE 1
    5001 ARCHIT シャルマ 55500 デリー テスト 4
    5002 SANKET チャウハン 70000 ハイデラバード JAVA 3
    5003 ROSHAN NEHTE 48500 チャンディーガル C# 5
    6001 RAHUL NIKAM 54500 バンガロール テスト 4
    6002 ATISH JADHAV 60500 バンガロール C# 5
    6003 ニキタ INGALE 65000 ハイデラバード ORACLE 1

    ステップ4:クエリでGROUPBY句を使用する準備ができました

    次に、例を使用してGROUPBY句について詳しく説明します

    例1: 都市ごとにグループ化された従業員レコードを表示するクエリを記述します。

    SELECT * FROM EMPLOYEES GROUP BY CITY;

    上記のクエリは、同じ都市の従業員が1つのグループと見なされる従業員のレコードを表示します。たとえば、テーブルに10人の従業員レコードがあり、3人がプネ市、3人がムンバイ市、2人がハイデラバードとバンガロールの場合、上記のクエリはプネ市の従業員ムンバイ市の従業員を1つのレコードとしてグループ化します。 。

    上記のクエリの出力:

    EMPLOYEEID FIRST_NAME LAST_NAME 給与 CITY 部門 MANAGERID
    6001 RAHUL NIKAM 54500 バンガロール テスト 4
    2001 PRACHI シャルマ 55500 チャンディーガル ORACLE 1
    4003 ルチカ AGARWAL 60000 デリー ORACLE 1
    5002 SANKET チャウハン 70000 ハイデラバード JAVA 3
    1003 NIKHIL VANI 50500 ジャイプール FMW 2
    2003 ルチカ JAIN 50000 ムンバイ C# 5
    1002 VAIBHAV シャルマ 60000 NOIDA C# 5
    1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1

    ご覧のとおり、従業員のレコードは都市ごとにグループ化されており、デフォルトではレコードは昇順で表示されます。

    例2: 給与ごとに従業員のレコードグループを降順で表示するクエリを記述します。

    SELECT * FROM EMPLOYEES GROUP BY SALARY DESC; 

    上記のクエリは、同じ給与の従業員が1つのグループと見なされる従業員のレコードを表示し、レコードは降順で表示されます。

    上記のクエリの出力:

    EMPLOYEEID FIRST_NAME LAST_NAME 給与 CITY 部門 MANAGERID
    5002 SANKET チャウハン 70000 ハイデラバード JAVA 3
    1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
    6003 ニキタ INGALE 65000 ハイデラバード ORACLE 1
    4001 RAJESH GOUD 60500 ムンバイ テスト 4
    1002 VAIBHAV シャルマ 60000 NOIDA C# 5
    3003 DEEPAM ジャウハリ 58500 ムンバイ JAVA 3
    2001 PRACHI シャルマ 55500 チャンディーガル ORACLE 1
    4002 ASHWINI バガット 54500 NOIDA JAVA 3
    1003 NIKHIL VANI 50500 ジャイプール FMW 2
    2003 ルチカ JAIN 50000 ムンバイ C# 5
    5003 ROSHAN NEHTE 48500 チャンディーガル C# 5

    ご覧のとおり、従業員の記録は給与ごとにグループ化されており、最後に説明するように、記録は降順で表示されます。

    例3: 給与と都市ごとに従業員のレコードグループを表示するクエリを作成します。

    SELECT * FROM EMPLOYEES GROUP BY SALARY, CITY;

    上記のクエリは、同じ給与と都市の従業員が1つのグループと見なされる従業員のレコードを表示します。

    たとえば、テーブルに10人の従業員レコードがあるとします。 10人の従業員から2人の従業員の給与と都市が他の2人の従業員と一致し、残りの6人の従業員の給与と都市が一致しない場合、6人の従業員は6つの別個のグループと見なされ、他の2人の従業員と一致する2人の従業員は1つのグループと見なされます。 。つまり、8つのグループが形成されます。

    上記のクエリの出力:

    EMPLOYEEID FIRST_NAME LAST_NAME 給与 CITY 部門 MANAGERID
    5003 ROSHAN NEHTE 48500 チャンディーガル C# 5
    2003 ルチカ JAIN 50000 ムンバイ C# 5
    1003 NIKHIL VANI 50500 ジャイプール FMW 2
    6001 RAHUL NIKAM 54500 バンガロール テスト 4
    4002 ASHWINI バガット 54500 NOIDA JAVA 3
    2001 PRACHI シャルマ 55500 チャンディーガル ORACLE 1
    5001 ARCHIT シャルマ 55500 デリー テスト 4
    3001 PRANOTI SHENDE 55500 PUNE JAVA 3
    3003 DEEPAM ジャウハリ 58500 ムンバイ JAVA 3
    4003 ルチカ AGARWAL 60000 デリー ORACLE 1
    1002 VAIBHAV シャルマ 60000 NOIDA C# 5
    6002 ATISH JADHAV 60500 バンガロール C# 5
    4001 RAJESH GOUD 60500 ムンバイ テスト 4
    6003 ニキタ INGALE 65000 ハイデラバード ORACLE 1
    1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
    5002 SANKET チャウハン 70000 ハイデラバード JAVA 3

    ご覧のとおり、従業員のレコードは給与と都市ごとにグループ化されており、デフォルトでは昇順で表示されます。

    例4: 市や部門ごとに従業員の記録を表示するクエリを作成します。

    SELECT * FROM EMPLOYEES GROUP BY CITY, DEPARTMENT;

    上記のクエリは、従業員が同じ都市にいる従業員の記録を表示し、部門は1つのグループと見なされます。

    上記のクエリの出力:

    EMPLOYEEID FIRST_NAME LAST_NAME 給与 CITY 部門 MANAGERID
    6002 ATISH JADHAV 60500 バンガロール C# 5
    6001 RAHUL NIKAM 54500 バンガロール テスト 4
    5003 ROSHAN NEHTE 48500 チャンディーガル C# 5
    2001 PRACHI シャルマ 55500 チャンディーガル ORACLE 1
    4003 ルチカ AGARWAL 60000 デリー ORACLE 1
    5001 ARCHIT シャルマ 55500 デリー テスト 4
    5002 SANKET チャウハン 70000 ハイデラバード JAVA 3
    6003 ニキタ INGALE 65000 ハイデラバード ORACLE 1
    1003 NIKHIL VANI 50500 ジャイプール FMW 2
    2003 ルチカ JAIN 50000 ムンバイ C# 5
    3003 DEEPAM ジャウハリ 58500 ムンバイ JAVA 3
    4001 RAJESH GOUD 60500 ムンバイ テスト 4
    1002 VAIBHAV シャルマ 60000 NOIDA C# 5
    4002 ASHWINI バガット 54500 NOIDA JAVA 3
    2002 BHAVESH JAIN 65500 PUNE FMW 2
    3001 PRANOTI SHENDE 55500 PUNE JAVA 3
    1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1

    ご覧のとおり、従業員のレコードは市や部門ごとにグループ化されており、デフォルトでは昇順で表示されます。

    例5: 従業員のテーブルから各部門の従業員のリストを数えるクエリを作成します。

    SELECT DEPARTMENT, COUNT(DEPARTMENT) FROM EMPLOYEES GROUP BY DEPARTMENT;

    上記のクエリは、部門ごとの各部門グループの従業員数を表示します。 6人の従業員が人事部門で働いているように、5人は別の部門で働いています。

    上記のクエリの出力:

    DEPARTMENT COUNT(DEPARTMENT)
    C# 4
    FMW 3
    JAVA 4
    ORACLE 4
    テスト 3

    ご覧のとおり、4人の従業員がC#部門で、3人がFMW部門で働いています。

    例6: 従業員のテーブルから各都市の従業員のリストを数えるクエリを作成します。

    SELECT CITY, COUNT(CITY) FROM EMPLOYEES GROUP BY CITY;

    上記のクエリは、都市ごとの各都市グループの従業員数を表示します。 3人の従業員がプネ市で働いているように、4人が別の都市で働いているように。

    上記のクエリの出力:

    CITY COUNT(CITY)
    バンガロール 2
    チャンディーガル 2
    デリー 2
    ハイデラバード 2
    ジャイプール 2
    ムンバイ 3
    NOIDA 2
    PUNE 3

    ご覧のとおり、バンガロール市で2人、ムンバイ市で3人の従業員が働いています。

    例7: 市ごとに従業員の給与グループを合計するクエリを作成します。

    SELECT CITY, SUM(SALARY) AS SALARY FROM EMPLOYEES GROUP BY CITY;

    上記は、都市名でグループ化された従業員の給与を合計するために使用されます。たとえば、同じ都市の従業員の場合、給与は合計になり、1つのグループと見なされます。給与を追加するために、集計合計関数とそれに続く給与列を使用しました。

    上記のクエリの出力:

    CITY 給与
    バンガロール 115000
    チャンディーガル 104000
    デリー 115500
    ハイデラバード 135000
    ジャイプール 101000
    ムンバイ 169000
    NOIDA 114500
    PUNE 186500

    ご覧のとおり、バンガロール市の給与は115000、チャンディーガル市の給与は104000で、従業員の給与が異なりますが、市からは各市で同じアプローチが使用されています。

    例8: 各部門からの最低賃金を見つけるためのクエリを作成します。

    SELECT DEPARTMENT, MIN(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT;

    上記のクエリは、各部門からの従業員の最低賃金を見つけるために使用されます。 Java部門の給与の従業員の1人は54500人で、これはJava部門全体の中で最低です。同じ48500は、C#部門の従業員に支払われる最低給与です。

    上記のクエリの出力:

    DEPARTMENT MIN(SALARY)
    C# 48500
    FMW 50500
    JAVA 54500
    ORACLE 55500
    テスト 54500

    ご覧のとおり、50500はFMW部門の従業員の1人に支払われる最低給与であり、55500はORACLE部門の従業員の1人に支払われる最低給与です。

    例9: 各都市の最低賃金を見つけるためのクエリを作成します。

    SELECT CITY, MAX(SALARY) FROM EMPLOYEES GROUP BY CITY;

    上記のクエリは、各都市からの最高給与を見つけるために使用されます。プネ市の給与の従業員の1人は65500で、これはプネ市全体で最も高く、同じ60500がムンバイ市の従業員に支払われる最高の給与です。

    上記のクエリの出力:

    CITY MAX(SALARY)
    バンガロール 60500
    チャンディーガル 55500
    デリー 60000
    ハイデラバード 70000
    ジャイプール 50500
    ムンバイ 60500
    NOIDA 60000
    PUNE 65500

    ご覧のとおり、50500はジャイプール市の従業員の1人に支払われる最高の給与であり、55500はチャンディーガル市の従業員の1人に支払われる最高の給与です。


    1. MacにSQLclをインストールする方法

    2. SQL Serverデータベースメール(T-SQL)から送信された電子メールのリストを返す

    3. 「トリニダード・トバゴ」を使用したOracleSQLDeveloperでの変数置換を回避する方法

    4. sys.dm_exec_describe_first_result_set_for_objectがSQLServerでどのように機能するか