+ (сложение) (Transact-SQL)
складывает два числа. С помощью этого арифметического оператора сложения можно также прибавлять число дней к дате.
Синтаксис
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
expression
Любое допустимое выражение expression одного из типов данных числовой категории, кроме типа данных bit. Нельзя использовать с типами данных date, time, datetime2 или datetimeoffset.
Типы результата
Возвращает результат типа данных аргумента с более высоким приоритетом. Дополнительные сведения см. в статье Приоритет типов данных (Transact-SQL).
Примеры
A. Использование оператора сложения для вычисления общего числа часов отсутствия на рабочем месте для каждого сотрудника.
В этом примере приведен расчет общего времени отсутствия на рабочем месте (в часах) для каждого сотрудника путем сложения отпускных часов и часов отсутствия по болезни.
Б. Использование оператора сложения для добавления дней к значениям даты и часа
В этом примере число дней прибавляется к дате типа datetime .
В. Сложение данных символьного и целочисленного типов
В приведенном ниже примере складываются значения типа int и символьного типа путем преобразования данных символьного типа в тип int. Если в строке типа char есть недопустимый символ, Transact-SQL возвращает ошибку.
Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)
Г. Использование оператора сложения для вычисления общего числа часов отсутствия на рабочем месте для каждого сотрудника
В приведенном ниже примере приведен расчет общего времени отсутствия на рабочем месте (в часах) для каждого сотрудника путем сложения отпускных часов и часов отсутствия по болезни, причем результаты сортируются по возрастанию.
Как суммировать два поля в SQL-запросе
Мне нужно получить общее количество двух полей, которые находятся в одной строке, и ввести это число в поле в конце той же строки.
Это то, для чего используется функция SUM, или вы можете использовать только функцию SUM для получения общей суммы столбца?
7 ответов
SUM является агрегатной функцией. Он рассчитает общую сумму для каждой группы. + используется для вычисления двух или более столбцов в строке.
рассмотрим такой пример,
SUM используется для суммирования значения в столбце для нескольких строк. Вы можете просто добавить свои столбцы вместе:
функция sum получает только общую сумму столбца. Чтобы суммировать два значения из разных столбцов, преобразуйте значения в int и добавьте их с помощью оператора+ —
надеюсь, что это поможет.
из-за того, что мои очки репутации меньше 50, я не мог прокомментировать или проголосовать за ответ e Coder выше. Это лучший способ сделать это, чтобы вам не пришлось использовать группу, поскольку у меня была аналогичная проблема.
Делая SUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0))) Как итог это даст вам номер, который вы хотите, но также избавит вас от любой ошибки за невыполнение группы. Это был мой запрос и дал мне общее количество и общую сумму для каждого дилера, а затем дал мне промежуточный итог для качественного и рискованного дилера ссуды.
Если вы хотите сложить два столбца, все, что вам нужно сделать, это добавить их. Тогда вы получите сумму этих двух столбцов для каждой строки, возвращаемой запросом.
то, что делает ваш код, это добавление двух столбцов вместе, а затем получение суммы сумм. Это сработает, но это может быть не то, чего вы пытаетесь достичь.
SUM (Transact-SQL)
Возвращает сумму всех, либо только уникальных, значений в выражении. Функция SUM может быть использована только для числовых столбцов. Значения NULL пропускаются.
Синтаксис
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
ALL
Применяет агрегатную функцию ко всем значениям. ALL является параметром по умолчанию.
DISTINCT
Указывает, что функция SUM возвращает сумму уникальных значений.
expression
Может быть константой, столбцом или функцией, а также любым сочетанием арифметических, побитовых и строковых операторов. expression — выражение категории точного числового или приблизительного числового типа данных, за исключением типа данных bit. Агрегатные функции и вложенные запросы не допускаются. Дополнительные сведения см. в статье Выражения (Transact-SQL).
OVER ( [ partition_by_clause ] order_by_clause)
partition_by_clause делит результирующий набор, полученный с помощью предложения FROM, на секции, к которым применяется функция. Если этот параметр не указан, функция обрабатывает все строки результирующего набора запроса как отдельные группы. order_by_clause определяет логический порядок, в котором выполняется операция. Аргумент order_by_clause является обязательным. Дополнительные сведения см. в статье Предложение OVER (Transact-SQL).
Типы возвращаемых данных
Возвращает сумму всех значений выражения, представленную в наиболее точном типе данных выражения.
| Результат выражения | Возвращаемый тип |
|---|---|
| tinyint | int |
| smallint | int |
| int | int |
| bigint | bigint |
| Категория decimal (p, s) | decimal(38, s) |
| Категории money и smallmoney | money |
| Категории float и real | float |
Комментарии
SUM — это детерминированная функция, если она используется без предложений OVER и ORDER BY. Она не детерминирована при использовании с предложениями OVER и ORDER BY. Дополнительные сведения см. в разделе Deterministic and Nondeterministic Functions.
Примеры
A. Использование SUM для возвращения сводных данных
В следующих примерах показано использование функции SUM для возвращения сводных данных в базе данных AdventureWorks2012.
Б. Использование предложения OVER
В следующем примере показано использование функции SUM с предложением OVER для представления суммарного объема годовых продаж на каждой территории в таблице Sales.SalesPerson в базе данных AdventureWorks2012. Данные секционируются по TerritoryID и логически сортируются по SalesYTD . Это означает, что функция SUM вычисляется для каждой территории на основании продаж за год. Обратите внимание, что в TerritoryID 1 для продаж за 2005 год используются две строки, в которых представлены два менеджера по продажам с показателями за этот год. После расчета суммарного значения итога для двух данных строк в вычисление включается третья строка, представляющая продажи за 2006 год.
В этом примере предложение OVER не включает в себя предложение PARTITION BY. Это означает, что функция будет применяться для всех строк, возвращаемых запросом. Предложение ORDER BY, указанное в предложении OVER, определяет логический порядок применения функции SUM. Запрос возвращает суммарное общее значение продаж за год для всех территорий, указанных в предложении WHERE. Предложение ORDER BY, указанное в инструкции SELECT, определяет порядок отображения строк запроса.
Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)
В. Простой пример функции SUM
В приведенном ниже примере возвращается общее количество единиц каждого продукта, проданное в 2003 году.
Здесь приводится частичный результирующий набор.
Г. Вычисление общей суммы значений в нескольких столбцах
В следующем примере производится вычисление суммы значений столбцов ListPrice и StandardCost для каждого из значений цвета, указанных в таблице Product .