В этом учебном пособии вы узнаете, как использовать PostgreSQL функцию sum с синтаксисом и примерами.
Описание
Функция sum PostgreSQL возвращает суммированное значение выражения.
Синтаксис
Синтаксис функции sum в PostgreSQL:
FROM tables
[WHERE conditions];
Или синтаксис функции sum при группировке результатов по одному или нескольким столбцам:
SUM(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2,... expression_n;
Параметры или аргументы
- expression1, expression2,... expression_n
- Выражения, которые не инкапсулированы в функцию sum и должны быть включены в операторе GROUP BY в конце SQL-запроса.
- aggregate_expression
- Это столбец или выражение, которое будет суммироваться.
- tables
- Таблицы, из которых вы хотите получить записи. В операторе FROM должна быть указана хотя бы одна таблица.
- WHERE conditions
- Необязательный. Это условия, которые должны быть соблюдены для выбора записей.
Применение
Функция sum может быть использована в следующих версиях PostgreSQL:
- PostgreSQL 11, PostgreSQL 10, PostgreSQL 9.6, PostgreSQL 9.5, PostgreSQL 9.4, PostgreSQL 9.3, PostgreSQL 9.2, PostgreSQL 9.1, PostgreSQL 9.0, PostgreSQL 8.4
Пример - с одним выражением
Рассмотрим некоторые примеры функции sum, чтобы понять, как использовать функцию sum в PostgreSQL.
Например, вы, возможно, захотите узнать, общее количество всех quantity в таблице inventory, для которых product_type 'Hardware'
1 2 3 |
SELECT sum(quantity) AS "Total Quantity" FROM inventory WHERE product_type = 'Hardware'; |
В этом примере функции sum мы назвали выражение sum(quantity) как "Total Quantity". В результате "Total Quantity" будет отображаться как имя поля при возвращении набора результатов.
Пример - использование DISTINCT
Вы можете использовать оператор DISTINCT внутри функции sum. Например, приведенный ниже оператор SQL возвращает совокупный общий salary с уникальными значениями salary, где salary превышает 38000$ в год.
1 2 3 |
SELECT sum(DISTINCT salary) AS "Total Salary" FROM employees WHERE salary > 38000; |
Если бы заработная плата составляла 82000$ в год, в функции sum использовалось бы только одно из этих значений.
Пример - использование формулы
expression, содержащееся в функции sum, необязательно должно быть одним полем. Вы также можете использовать формулу. Например, вы можете рассчитать общую комиссию.
1 2 |
SELECT sum(sales * 0.05) AS "Total Commission" FROM orders; |
Пример - использование GROUP BY
В некоторых случаях вам потребуется использовать оператор GROUP BY с функцией sum.
Например, вы также можете использовать функцию sum для возврата department (отдела) и sum(quantity) (общего количества в связанном отделе).
1 2 3 |
SELECT department, sum(quantity) AS "Total Quantity" FROM inventory GROUP BY department; |
Поскольку в вашем операторе SELECT указан один столбец, который не инкапсулирован в функцию sum, вы должны использовать оператор GROUP BY. Поэтому поле department должно быть указано в операторе GROUP BY.