SQL Sum()関数は、式の合計値を返すSQLの集計関数です。式は数値の場合もあれば、式の場合もあります。
構文:
SELECT SUM(columnname) FROM table_name WHERE conditions; 次のレコードがある既存のテーブルについて考えてみます。
表:従業員
| 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 |
例1: 従業員のテーブルから従業員の総給与を合計するクエリを作成します。
SELECT SUM (SALARY) AS 'SALARY' FROM EMPLOYEES; Sum式は、合計給与の合計を表示します。 s
出力:
| SALARY |
| 742000 |
例2: 従業員のテーブルから、都市がプネである従業員の給与を合計するクエリを記述します。
SELECT CITY, SUM(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE CITY = 'PUNE'; このクエリは、都市がプネである従業員の給与の合計を作成します。
出力:
| CITY | 給与 |
| PUNE | 186500 |
例3: オラクルを部門とする従業員の従業員テーブルから従業員の給与を合計するクエリを記述します。
SELECT DEPARTMENT, SUM(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE DEPARTMENT = 'ORACLE'; 出力:
| DEPARTMENT | 給与 |
| ORACLE | 181000 |
例4: 部門にオラクルとFMWが含まれる従業員テーブルから従業員の給与を合計するクエリを記述します。
SELECT SUM(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW'); 出力:
| SALARY |
| 347500 |
例4: 給与が50000を超え、都市にプネとムンバイが含まれる従業員のテーブルから、従業員の給与の合計にクエリを記述します。
SELECT CITY, SUM(SALARY) AS EMPLOYEE_SALARY FROM EMPLOYEES WHERE SALARY > 50000 AND CITY IN ('PUNE', 'MUMBAI') GROUP BY CITY; 出力 :
| CITY | EMPLOYEE_SALARY |
| PUNE | 119000 |
| ムンバイ | 186500 |
例5: 給与が50000を超えるか、都市にOracle、FMW、および部門別のグループが含まれる従業員のテーブルから、従業員の給与を合計するクエリを記述します。
SELECT DEPARTMENT, SUM(SALARY) AS EMPLOYEE_SALARY FROM EMPLOYEES WHERE SALARY > 50000 OR DEPARTMENT IN ('ORACLE', 'FMW') GROUP BY DEPARTMENT; 出力:
| DEPARTMENT | EMPLOYEE_SALARY |
| C# | 60000 |
| FMW | 166500 |
| JAVA | 168500 |
| ORACLE | 181000 |
| テスト | 116000 |
例6: 従業員の固有の都市と都市ごとのグループを使用して、従業員のテーブルから従業員の給与を合計するクエリを記述します。
SELECT CITY, SUM(DISTINCT SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY CITY; 出力:
| CITY | EMPLOYEE_SALARY |
| チャンディーガル | 55500 |
| デリー | 115500 |
| ジャイプール | 50500 |
| ムンバイ | 169000 |
| NOIDA | 114500 |
| PUNE | 121000 |
例7: 一意の部門と部門ごとのグループを持つ従業員のテーブルから従業員の給与を合計するクエリを記述します。
SELECT DEPARTMENT, SUM(DISTINCT SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY DEPARTMENT; 出力:
| DEPARTMENT | EMPLOYEE_SALARY |
| C# | 110000 |
| FMW | 116000 |
| JAVA | 168500 |
| ORACLE | 181000 |
| テスト | 116000 |
例8: 従業員のテーブルから従業員の給与を合計し、都市、部門ごとにグループ化するクエリを作成します。
SELECT CITY, DEPARTMENT, SUM(SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY CITY, DEPARTMENT; 出力:
| CITY | 部門 | EMPLOYEE_SALARY |
| チャンディーガル | ORACLE | 55500 |
| デリー | ORACLE | 60000 |
| デリー | テスト | 55500 |
| ジャイプール | FMW | 101000 |
| ムンバイ | C# | 50000 |
| ムンバイ | JAVA | 58500 |
| ムンバイ | テスト | 60500 |
| NOIDA | C# | 60000 |
| NOIDA | JAVA | 54500 |
| PUNE | FMW | 65500 |
| PUNE | JAVA | 55500 |
| PUNE | ORACLE | 65500 |
例9: 総給与が75000を超える都市ごとに、従業員のテーブルグループからの従業員の給与を合計するクエリを記述します。
SELECT CITY, SUM(SALARY) AS SALARY FROM EMPLOYEES GROUP BY CITY HAVING SUM(SALARY) > 75000; 出力:
| CITY | 給与 |
| デリー | 115500 |
| ジャイプール | 101000 |
| ムンバイ | 169000 |
| NOIDA | 114500 |
| PUNE | 186500 |
ご覧のとおり、給与総額が75000を超える都市しかありません。
例10: 従業員の給与をラップトップで合計し、部門ごとにグループ化するクエリを作成します。
SELECT DEPARTMENT, SUM(SALARY) AS SALARY FROM EMPLOYEES WHERE EMPLOYEEID IN (SELECT EMPLOYEEID FROM LAPTOP) GROUP BY DEPARTMENT; 出力:
| DEPARTMENT | 給与 |
| C# | 60000 |
| JAVA | 113000 |
| ORACLE | 60000 |
| テスト | 55500 |
例11: 総給与が58000を超える部門ごとに、ラップトップとグループで従業員の給与を合計するクエリを作成します。
SELECT DEPARTMENT, SUM(SALARY) AS SALARY FROM EMPLOYEES WHERE EMPLOYEEID IN (SELECT EMPLOYEEID FROM LAPTOP) GROUP BY DEPARTMENT HAVING SUM(SALARY) > 58000; 出力:
| DEPARTMENT | 給与 |
| C# | 60000 |
| JAVA | 113000 |
| ORACLE | 60000 |