Sql сумма по столбцу с условием: MySQL как получить сумму значений столбца?
MySQL как получить сумму значений столбца?
Допустим есть таблица «journal (журнал оценок)», в ней столбцы «id (ид записи)» «student (студент)», «discipline (предмет)», «score (оценка)» и «date (дата оценки)». Таблица имеет следующие записи:
id | student | discipline | score | date |
1 | Бурученко Т. | Алгебра | 3 | 2018-01-15 |
2 | Громова А. | География | 4 | 2018-01-16 |
3 | Гущин В. | Алгебра | 5 | 2018-01-17 |
4 | Думчев С. | География | 2 | 2018-01-18 |
5 | Бурученко Т. | География | 5 | 2018-01-19 |
6 | Громова А. | Алгебра | 1 | 2018-01-22 |
7 | Гущин В. | География | 5 | 2018-01-23 |
8 | Думчев С. | Алгебра | 3 | 2018-01-24 |
9 | Бурученко Т. | Алгебра | 5 | 2018-01-25 |
10 | Громова А. | География | 4 | 2018-01-25 |
11 | Гущин В. | Алгебра | 2 | 2018-01-26 |
12 | Думчев С. | География | 3 | 2018-01-26 |
Пример №1. Получим сумму всех значений столбца «score», для этого выполним следующий запрос:
SELECT SUM(score) FROM journal
получим такой результат:
Пример №2. Усложним запрос, теперь получим сумму строк столбца «score», значение которых больше 4.
SELECT SUM(score) FROM journal WHERE score > 4
результат:
Пример №3. Сумма значений столбца «score» с датой от 25 января 2018.
SELECT SUM(score) FROM journal WHERE date >= '2018-01-25'
результат:
Пример №4. Сумма оценок с номерами id равными 1 и 10.
SELECT SUM(score) FROM journal WHERE id IN (1,10)
результат:
Пример №5. Сумма оценок последних 5 записей (работает не во всех версия MySQL):
SELECT SUM(score) FROM journal WHERE id IN (SELECT id FROM journal ORDER BY id DESC LIMIT 5)
результат:
Пример №6. Наконец добрались к примерам с группировками. Поставим задачу получить сумму всех оценок каждого студента по отдельности, для этого выполним такой запрос:
SELECT student, SUM(score) FROM journal GROUP BY student
результат:
student | SUM(score) |
Бурученко Т. | 13 |
Громова А. | 9 |
Гущин В. | 12 |
Думчев С. | 8 |
Пример №7. Теперь рассмотрим пример с двойной группировкой. Найдем сумму оценок каждого студента по каждому предмету отдельно:
SELECT student, discipline, SUM(score) FROM journal GROUP BY student, discipline
результат:
student | discipline | SUM(score) |
Бурученко Т. | Алгебра | 8 |
Бурученко Т. | География | 5 |
Громова А. | Алгебра | 1 |
Громова А. | География | 8 |
Гущин В. | Алгебра | 7 |
Гущин В. | География | 5 |
Думчев С. | Алгебра | 3 |
Думчев С. | География | 5 |
SQL функция SUM — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
В этом учебном материале вы узнаете, как использовать SQL функцию SUM с синтаксисом и примерами.
Описание
SQL функция SUM используется для возврата суммы выражения в операторе SELECT.
Синтаксис
Синтаксис для функции SUM в SQL.
SELECT SUM(aggregate_expression)
FROM tables
[WHERE conditions];
Или синтаксис для функции SUM при группировке результатов по одному или нескольким столбцам.
SELECT expression1, expression2, … expression_n,
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
- Необязательный. Это условия, которые должны быть выполнены для выбора записей
Пример — с одним выражением
Например, вы, возможно, захотите узнать, как совокупная общая зарплата всех сотрудников, чья зарплата превышает 25 000 долларов в год.
SELECT SUM(salary) AS «Total Salary»
FROM employees
WHERE salary > 25000;
SELECT SUM(salary) AS «Total Salary» FROM employees WHERE salary > 25000; |
В этом примере SQL функции SUM мы присвоили псевдониму выражение SUM(salary) как «Total Salary». В результате «Total Salary» будет отображаться как имя поля при возврате набора результатов.
Пример — использование SQL DISTINC
Вы можете использовать SQL предложение DISTINCT в функции SUM. Например, приведенный ниже SQL оператор SELECT возвращает совокупный общий оклад с уникальными значениями окладов, где оклад превышает 25000 $ в год.
SELECT SUM(DISTINCT salary) AS «Total Salary»
FROM employees
WHERE salary > 25000;
SELECT SUM(DISTINCT salary) AS «Total Salary» FROM employees WHERE salary > 25000; |
Если бы две зарплаты составляли 30000 $ в год, в SQL функции SUM использовалось бы только одно из этих значений.
Пример — использование формул
expressions, содержащееся в SQL функции SUM, необязательно должно быть одним полем. Вы также можете использовать формулу. Например, вам может потребоваться чистый доход для бизнеса. Чистый доход рассчитывается как общий доход за вычетом общих расходов.
SELECT SUM(income — expenses) AS «Net Income»
FROM gl_transactions;
SELECT SUM(income — expenses) AS «Net Income» FROM gl_transactions; |
Вы также можете выполнить математическую операцию в SQL функции SUM. Например, вы можете определить общую комиссию как 10% от общего объема продаж.
SELECT SUM(sales * 0.10) AS «Commission»
FROM order_details;
SELECT SUM(sales * 0.10) AS «Commission» FROM order_details; |
Пример — использование SQL GROUP BY
В некоторых случаях вам потребуется использовать SQL оператор GROUP BY с функцией SUM.
Например, вы также можете использовать SQL функцию SUM для возврата названия отдела и общих продаж (в связанном отделе).
SELECT department,
SUM(sales) AS «Total sales»
FROM order_details
GROUP BY department;
SELECT department, SUM(sales) AS «Total sales» FROM order_details GROUP BY department; |
Поскольку в SQL операторе SELECT указан один столбец, который не инкапсулирован в SQL функции SUM, необходимо использовать SQL оператор GROUP BY. Поэтому поле department должно быть указано в SQL операторе GROUP BY.
Агрегатные функции SQL — SUM, MIN, MAX, AVG, COUNT
Будем учиться подводить итоги. Нет, это ещё не итоги изучения SQL, а итоги значений столбцов таблиц
базы данных. Агрегатные функции SQL действуют в отношении значений столбца с целью получения
единого результирующего значения. Наиболее часто применяются агрегатные функции SQL SUM, MIN, MAX,
AVG и COUNT. Следует различать
два случая применения агрегатных функций. Первый: агрегатные функции используются сами по себе и возвращают
одно результирующее значение. Второй: агрегатные функции используются с оператором SQL GROUP BY, то есть
с группировкой по полям (столбцам) для получения результирующих значений в каждой группе. Рассмотрим сначала случаи использования агрегатных
функций без группировки.
Функция SQL SUM возвращает сумму значений столбца таблицы базы данных. Она может применяться только
к столбцам, значениями которых являются числа. Запросы SQL для получения результирующей суммы
начинаются так:
SELECT SUM(ИМЯ_СТОЛБЦА) …
После этого выражения следует FROM (ИМЯ_ТАБЛИЦЫ), а далее с помощью конструкции WHERE может быть
задано условие. Кроме того, перед именем столбца может быть указано DISTINCT, и это означает, что
учитываться будут только уникальные значения. По умолчанию же учитываются все значения (для этого
можно особо указать не DISTINCT, а ALL, но слово ALL не является обязательным).
Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД
не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке.
Сначала работать будем с базой данных фирмы — Company1. Скрипт для создания этой базы данных, её таблиц и заполения таблиц данными —
в файле по этой ссылке.
Пример 1. Есть база данных фирмы с данными о её подразделениях
и сотрудниках. Таблица Staff помимо всего имеет столбец с данными о заработной плате сотрудников. Выборка
из таблицы имеет следующий вид (для увеличения картинки щёлкнуть по ней левой кнопкой мыши):
Для получения суммы размеров всех заработных плат используем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):
SELECT SUM(Salary)
FROM Staff
Этот запрос вернёт значение 287664,63.
А теперь упражнение для самостоятельного решения. В упражнениях уже начинаем
усложнять задания, приближая их к тем, что встречаются на практике.
Функция SQL MIN также действует в отношении столбцов, значениями которых являются числа и возвращает
минимальное среди всех значений столбца. Эта функция имеет синтаксис аналогичный синтаксису функции SUM.
Пример 3. База данных и таблица —
те же, что и в примере 1.
Требуется узнать минимальную заработную плату сотрудников отдела с номером 42.
Для этого пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):
SELECT MIN(Salary)
FROM Staff WHERE Dept=42
Запрос вернёт значение 10505,90.
И вновь упражнение для самостоятельного решения. В этом и некоторых
других упражнениях потребуется уже не только таблица Staff, но и таблица Org, содержащая данные о
подразделениях фирмы:
Пример 4. К таблице Staff добавляется таблица Org, содержащая данные
о подразделениях фирмы. Вывести минимальное количество лет, проработанных одним сотрудником в отделе,
расположенном в Бостоне.
Правильное решение и ответ.
Аналогично работает и имеет аналогичный синтаксис функция SQL MAX, которая применяется, когда
требуется определить максимальное значение среди всех значений столбца.
Пример 5. База данных и таблица —
те же, что и в предыдущих примерах.
Требуется узнать максимальную заработную плату сотрудников отдела с номером 42.
Для этого пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):
SELECT MAX(Salary)
FROM Staff WHERE Dept=42
Запрос вернёт значение 18352,80
Пришло время упражнения для самостоятельного решения.
Пример 6. Вновь работаем с двумя таблицами — Staff и Org.
Вывести название отдела и максимальное значение комиссионных, получаемых одним сотрудником в отделе,
относящемуся к группе отделов (Division) Eastern. Использовать JOIN (соединение таблиц).
Правильное решение и ответ.
Указанное в отношении синтаксиса для предыдущих описанных функций верно и в отношении функции SQL AVG.
Эта функция возвращает среднее значение среди всех значений столбца.
Пример 7. База данных и таблица —
те же, что и в предыдущих примерах.
Пусть требуется узнать средний трудовой стаж сотрудников отдела с номером 42.
Для этого пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):
SELECT AVG(Years)
FROM Staff WHERE Dept=42
Результатом будет значение 6,33
В следующем упражнении для самостоятельного решения помимо
агрегатной функции требуется использовать также предикат BETWEEN.
Функция SQL COUNT возвращает количество записей таблицы базы данных. Если в запросе указать
SELECT COUNT(ИМЯ_СТОЛБЦА) …, то результатом будет количество записей без учёта тех записей,
в которых значением столбца является NULL (неопределённое). Если использовать в качестве аргумента
звёздочку и начать запрос SELECT COUNT(*) …, то результатом будет количество всех записей (строк)
таблицы.
Пример 9. База данных и таблица —
те же, что и в предыдущих примерах.
Требуется узнать число всех сотрудников, которые получают комиссионные. Число
сотрудников, у которых значения столбца Comm — не NULL, вернёт следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):
SELECT COUNT(Comm)
FROM Staff
Результатом будет значение 11.
Пример 10. База данных и таблица —
те же, что и в предыдущих примерах.
Если требуется узнать общее количество записей в таблице, то
применяем запрос со звёздочкой в качестве аргумента функции COUNT (на MS SQL Server — с предваряющей конструкцией USE company1;):
SELECT COUNT(*)
FROM Staff
Результатом будет значение 17.
В следующем упражнении для самостоятельного решения потребуется
использовать подзапрос.
Теперь рассмотрим применение агрегатных функций вместе с оператором SQL GROUP BY. Оператор SQL GROUP BY
служит для группировки результирующих значений по столбцам таблицы базы данных. На сайте есть урок,
посвящённый отдельно этому оператору.
Работать будем с базой данных «Портал объявлений 1». Скрипт для создания этой базы данных, её таблицы и заполения таблицы данных —
в файле по этой ссылке.
Пример 12. Итак, есть база данных портала объявлений. В ней есть
таблица Ads, содержащая данные об объявлениях, поданных за неделю. Столбец Category содержит
данные о больших категориях объявлений (например, Недвижимость), а столбец Parts — о более мелких
частях, входящих в категории (например, части Квартиры и Дачи являются частями категории Недвижимость).
Столбец Units содержит данные о количестве поданных объявлений, а столбец Money — о денежных суммах,
вырученных за подачу объявлений.
Category | Part | Units | Money |
Транспорт | Автомашины | 110 | 17600 |
Недвижимость | Квартиры | 89 | 18690 |
Недвижимость | Дачи | 57 | 11970 |
Транспорт | Мотоциклы | 131 | 20960 |
Стройматериалы | Доски | 68 | 7140 |
Электротехника | Телевизоры | 127 | 8255 |
Электротехника | Холодильники | 137 | 8905 |
Стройматериалы | Регипс | 112 | 11760 |
Досуг | Книги | 96 | 6240 |
Недвижимость | Дома | 47 | 9870 |
Досуг | Музыка | 117 | 7605 |
Досуг | Игры | 41 | 2665 |
Используя оператор SQL GROUP BY, найти суммы денег, вырученных за подачу
объявлений в каждой категории. Пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE adportal1;):
SELECT Category, SUM(Money) AS Money
FROM ADS GROUP BY Category
Результатом будет следующая таблица:
Category | Money |
Досуг | 16510 |
Недвижимость | 40530 |
Стройматериалы | 18900 |
Транспорт | 38560 |
Электротехника | 17160 |
Пример 13. База данных и таблица —
та же, что в предыдущем примере.
Используя оператор SQL GROUP BY, выяснить, в какой части каждой категории было
подано наибольшее число объявлений. Пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE adportal1;):
SELECT Category, Part, MAX(Units) AS Maximum
FROM ADS GROUP BY Category
Результатом будет следующая таблица:
Category | Part | Maximum |
Досуг | Музыка | 117 |
Недвижимость | Квартиры | 89 |
Стройматериалы | Регипс | 112 |
Транспорт | Мотоциклы | 131 |
Электротехника | Холодильники | 137 |
Итоговые и индивидуальные значения в одной таблице можно получить объединением
результатов запросов с помощью оператора UNION.
Поделиться с друзьями
Реляционные базы данных и язык SQL
SUM ФУНКЦИЯ — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
В этом учебном пособии вы узнаете, как использовать Oracle/PLSQL функцию SUM с синтаксисом и примерами.
Описание
Oracle/PLSQL функция SUM возвращает суммарное значение выражения.
Синтаксис
Синтаксис Oracle/PLSQL функции SUM:
SELECT SUM(aggregate_expression)
FROM tables
[WHERE conditions];
ИЛИ синтаксис для функции SUM с группировкой результатов по одному или нескольким столбцам:
SELECT expression1, expression2, … expression_n,
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 возвращает числовое значение.
Применение
Функцию SUM можно использовать в следующих версиях Oracle/PLSQL:
- Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i
Пример с одним полем
Рассмотрим несколько примеров функции SUM и изучим, как использовать функцию SUM в Oracle/PLSQL.
Например, вы, возможно, захотите узнать, какая совокупная общая заработная плата всех сотрудников, чья зарплата превышает 50000$ в год.
SELECT SUM(salary) AS «Total Salary»
FROM employees
WHERE salary > 50000;
SELECT SUM(salary) AS «Total Salary» FROM employees WHERE salary > 50000; |
В этом примере функции SUM мы использовали псевдоним «Total Salary» для SUM(salary). В результате «Total Salary» будет отображаться в качестве имени поля при возврате результирующего набора.
Пример — использование DISTINCT
Вы можете использовать оператор DISTINCT в функции SUM. Например, приведенный ниже оператор SQL возвращает совокупный общий оклад с уникальными значениями окладов, где оклад превышает 50000$ в год.
SELECT SUM(DISTINCT salary) AS «Total Salary»
FROM employees
WHERE salary > 50000;
SELECT SUM(DISTINCT salary) AS «Total Salary» FROM employees WHERE salary > 50000; |
Если бы заработная плата составляла 80000$ в год, в функции SUM использовалось бы только одно из этих значений.
Пример — использование формулы
Выражение, содержащееся в функции SUM, не обязательно должно быть одним полем. Вы также можете использовать формулу. Например, вы можете рассчитать общую комиссию.
SELECT SUM(sales * 0.05) AS «Total Commission»
FROM orders;
SELECT SUM(sales * 0.05) AS «Total Commission» FROM orders; |
Пример — использование GROUP BY
В некоторых случаях, вам будет необходимо использовать функцию SUM в операторе GROUP BY.
Например, вы могли бы также использовать функцию SUM, чтобы вернуть название department (отдела) и SUM(sales) (общий объем продаж в соответствующем отделе).
SELECT department,
SUM(sales) AS «Total sales»
FROM order_details
GROUP BY department;
SELECT department, SUM(sales) AS «Total sales» FROM order_details GROUP BY department; |
Поскольку в вашем операторе SELECT указан один столбец, который не инкапсулирован в функции SUM, то вы должны использовать оператор GROUP BY. Поэтому поле department (отдела) должно быть указано в разделе GROUP BY.
Как суммировать два поля в SQL-запросе
Мне нужно получить общее количество двух полей, которые находятся в одной строке, и ввести это число в поле в конце той же строки.
Это мой код.
Sum(tbl1.fld1 + tbl1.fld2) AS [Total]
Это то, для чего используется функция SUM, или вы можете использовать только функцию SUM для получения общей суммы столбца?
спасибо
53
автор: Anton Hughes
7 ответов
SUM
является агрегатной функцией. Он рассчитает общую сумму для каждой группы. +
используется для вычисления двух или более столбцов в строке.
рассмотрим такой пример,
ID VALUE1 VALUE2
===================
1 1 2
1 2 2
2 3 4
2 4 5
SELECT ID, SUM(VALUE1), SUM(VALUE2)
FROM tableName
GROUP BY ID
результате
ID, SUM(VALUE1), SUM(VALUE2)
1 3 4
2 7 9
SELECT ID, VALUE1 + VALUE2
FROM TableName
результате
ID, VALUE1 + VALUE2
1 3
1 4
2 7
2 9
SELECT ID, SUM(VALUE1 + VALUE2)
FROM tableName
GROUP BY ID
результате
ID, SUM(VALUE1 + VALUE2)
1 7
2 16
попробуйте следующее:
SELECT *, (FieldA + FieldB) AS Sum
FROM Table
SUM используется для суммирования значения в столбце для нескольких строк. Вы можете просто добавить свои столбцы вместе:
select tblExportVertexCompliance.TotalDaysOnIncivek + tblExportVertexCompliance.IncivekDaysOtherSource AS [Total Days on Incivek]
6
автор: Daniel Kelley
функция sum получает только общую сумму столбца. Чтобы суммировать два значения из разных столбцов, преобразуйте значения в int и добавьте их с помощью оператора+ —
Select (convert(int, col1)+convert(int, col2)) as summed from tbl1
надеюсь, что это поможет.
3
автор: LuigiEdlCarno
ID VALUE1 VALUE2
===================
1 1 2
1 2 2
2 3 4
2 4 5
select ID, (coalesce(VALUE1 ,0) + coalesce(VALUE2 ,0) as Total from TableName
из-за того, что мои очки репутации меньше 50, я не мог прокомментировать или проголосовать за ответ e Coder выше. Это лучший способ сделать это, чтобы вам не пришлось использовать группу, поскольку у меня была аналогичная проблема.
Делая SUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0)))
Как итог это даст вам номер, который вы хотите, но также избавит вас от любой ошибки за невыполнение группы.
Это был мой запрос и дал мне общее количество и общую сумму для каждого дилера, а затем дал мне промежуточный итог для качественного и рискованного дилера ссуды.
SELECT
DISTINCT STEP1.DEALER_NBR
,COUNT(*) AS DLR_TOT_CNT
,SUM((COALESCE(DLR_QLTY,0))+(COALESCE(DLR_RISKY,0))) AS DLR_TOT_AMT
,COUNT(STEP1.DLR_QLTY) AS DLR_QLTY_CNT
,SUM(STEP1.DLR_QLTY) AS DLR_QLTY_AMT
,COUNT(STEP1.DLR_RISKY) AS DLR_RISKY_CNT
,SUM(STEP1.DLR_RISKY) AS DLR_RISKY_AMT
FROM STEP1
WHERE DLR_QLTY IS NOT NULL OR DLR_RISKY IS NOT NULL
GROUP BY STEP1.DEALER_NBR
2
автор: CelticCoder
Если вы хотите сложить два столбца, все, что вам нужно сделать, это добавить их. Тогда вы получите сумму этих двух столбцов для каждой строки, возвращаемой запросом.
то, что делает ваш код, это добавление двух столбцов вместе, а затем получение суммы сумм. Это сработает, но это может быть не то, чего вы пытаетесь достичь.
SQL Функции COUNT(), AVG() и SUM()
SQL COUNT(), AVG() и SUM()
Функция COUNT() возвращает количество строк, соответствующих заданному критерию.
Функция AVG() возвращает среднее значение числового столбца.
Функция SUM() возвращает общую сумму числового столбца.
Синтаксис COUNT()
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
Синтаксис AVG()
SELECT AVG(column_name)
FROM table_name
WHERE condition;
Синтаксис SUM()
SELECT SUM(column_name)
FROM table_name
WHERE condition;
Демо база данных
Ниже приведен выбор из таблицы «Products» в образце базы данных Northwind:
ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
---|---|---|---|---|---|
1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18 |
2 | Chang | 1 | 1 | 24 — 12 oz bottles | 19 |
3 | Aniseed Syrup | 1 | 2 | 12 — 550 ml bottles | 10 |
4 | Chef Anton’s Cajun Seasoning | 2 | 2 | 48 — 6 oz jars | 22 |
5 | Chef Anton’s Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
Пример COUNT()
Следующая инструкция SQL находит количество продуктов:
Примечание: Значения NULL не учитываются.
Пример AVG()
Следующая инструкция SQL находит среднюю цену всех продуктов:
Примечание: Значения NULL игнорируются.
Демо база данных
Ниже приведен выбор из таблицы «OrderDetails» в образце базы данных Northwind:
OrderDetailID | OrderID | ProductID | Quantity |
---|---|---|---|
1 | 10248 | 11 | 12 |
2 | 10248 | 42 | 10 |
3 | 10248 | 72 | 5 |
4 | 10249 | 14 | 9 |
5 | 10249 | 51 | 40 |
Пример SUM()
Следующая инструкция SQL находит сумму полей «Quantity» в таблице «OrderDetails»:
Примечание: Значения NULL игнорируются.
Функция суммирования в SQL: SUM
Функция SUM в SQL-языке, несмотря на свою простоту, используется довольно часто при работе с базой данных. С её помощью удобно получать некоторые промежуточные или итоговые результаты, не прибегая к помощи вспомогательных инструментариев СУБД.
Синтаксис функции
В большинстве языков SQL синтаксис sum одинаков — в качестве аргумента используется только имя поля или некоторое арифметическое действие нескольких из них, по которому требуется провести суммирование.
В исключительных случаях можно передавать конкретное значение в виде числа или переменной, однако подобные «схемы» практически не используются, так как не несут в себе большой ценности. Ниже приведён синтаксис функции на языке SQL:
sum(а) — здесь в качестве параметра а используется некоторое числовое значение или выражение
Стоит отметить, что перед параметром можно устанавливать ключевые слова, например, DISTINCT или ALL, которые будут брать только уникальные или все значения, соответственно.
Пример использования SUM в SQL
Для окончательного понимания принципа работы функции стоит рассмотреть несколько примеров. В SQL SUM может использоваться как в качестве возвращаемого результата, так и в роли промежуточного значения, например, для проверки условия.
Для первого случая рассмотрим вариант, когда требуется вернуть сумму продаж по каждому товару, учитывая, что число сделанных покупок может быть во множественном числе. Для получения результата будет достаточно выполнить следующий запрос:
SELECT Товар, sum(СуммаПокупок) FROM Продажи GroupBy Товар;
Ответом на данную команду будет уникальный список товаров с итоговой суммой покупок по каждому из них.
Для второго примера необходимо получить список товаров, сумма продаж по которым превысила некоторое значение, например, 100. Получить результат по данной задаче можно несколькими способами, наиболее оптимальным из которых является исполнение одного запроса:
SELECT Товар FROM (SELECT Товар, sum(СуммаПокупок) as Сумма FROM Продажи) WHERE Сумма > 100.
sql — столбец умножения и суммы при условии
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
- Авторизоваться
зарегистрироваться текущее сообщество
Переполнение стека
Помогите
болтатьПереполнение мета-стека
.
кв.м — СУММА С СОСТОЯНИЕМ
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.
sql server 2008 — SQL Sum с условиями в выбранном случае
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
.Сервер
sql — как получить сумму столбца с тем же идентификатором в SQL?
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
.