Sum 1 sql что это
SQL SUM () функция
SUM () функция
Функция SQL AGGREGATE SUM () возвращает сумму всех выбранных столбцов.
Синтаксис:
Поддержка СУБД: функция SUM ()
СУБД | команда |
MySQL | поддержанный |
PostgreSQL | поддержанный |
SQL Server | поддержанный |
оракул | поддержанный |
Синтаксис DB2 и Oracle:
Параметры:
название | Описание |
---|---|
ВСЕ | Относится ко всем значениям. |
DISTINCT | Вернуть сумму уникальных значений. |
выражение | Выражение состоит из одной константы, переменной, скалярной функции или имени столбца. Выражение является выражением категории точных числовых или приблизительных числовых типов данных, за исключением типа битовых данных. Агрегатные функции и подзапросы не допускаются. |
SQL SUM () на конкретном примере столбца
Чтобы получить общую сумму ‘advance_amount’ таблицы ‘orders’, можно использовать следующий оператор SQL:
Пример таблицы: заказы
Код SQL:
Иллюстрированная презентация:
SQL SUM () на примере нескольких столбцов
Чтобы получить сумму значений ‘creation_amt’ и ‘receive_amt’ из таблицы ‘customer’, можно использовать следующий оператор SQL:
Образец таблицы: клиент
Код SQL:
SQL SUM () с где
В следующем примере мы обсудили использование предложения WHERE вместе с функцией SQL SUM () для суммирования одного или нескольких столбцов в соответствии с одним или несколькими условиями.
Пример:
1. ‘agent_code’ должен быть ‘A003’,
можно использовать следующий оператор SQL:
Пример таблицы: заказы
Код SQL:
SQL SUM () с COUNT ()
В следующем примере мы обсудили использование SQL SUM () и SQL COUNT () вместе в операторе SQL SELECT. В связи с этим следует отметить, что SQL SUM () и SQL COUNT () оба возвращают одну строку.
Пример:
1. данные должны быть группой ‘cust_country’,
можно использовать следующий оператор SQL:
Образец таблицы: клиент
Код SQL:
Примечание. Выводы указанного оператора SQL, показанного здесь, взяты с использованием Oracle Database 10g Express Edition.
Вот слайд-презентация всех агрегатных функций.
Упражнения по SQL
Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.
Sum (многомерные выражения)
Возвращает сумму числового выражения, вычисленную по указанному набору.
Синтаксис
Аргументы
Set_Expression
Допустимое многомерное выражение набора.
Numeric_Expression
Допустимое числовое выражение (обычно многомерное выражение координат ячейки), возвращающее число.
Remarks
Если числовое выражение указано, его значение вычисляется для всех элементов набора, затем эти значения суммируются. Если числовое выражение не указано, вычисления выполняются в текущем контексте элементов, затем значения суммируются. Если функция SUM применяется к нечисловому выражению, результат не определен.
Службы Analysis Services пропускают значения NULL при вычислении суммы набора чисел.
Примеры
В следующем примере возвращается сумма мер Reseller Sales Amounts для всех элементов в иерархии атрибута Product.Category в 2001 и 2002 календарном году.
В следующем примере возвращается сумма затрат на транспортировку товаров, заказанных через Интернет, за июль 2002 года, до 20 июля.
В следующем примере используется ключевое слово WITH MEMBER и функция Sum для определения вычисляемого элемента в измерении Measures, содержащего сумму меры Товарооборот посредников для канады и США элементов иерархии атрибута Country в измерении Geography.
WITH MEMBER MEASURES.YTDSUM AS
SUM(YTD(), [Measures].[Internet Sales Amount])
Будем учиться подводить итоги. Нет, это ещё не итоги изучения SQL, а итоги значений столбцов таблиц базы данных. Агрегатные функции SQL действуют в отношении значений столбца с целью получения единого результирующего значения. Наиболее часто применяются агрегатные функции SQL SUM, MIN, MAX, AVG и COUNT. Следует различать два случая применения агрегатных функций. Первый: агрегатные функции используются сами по себе и возвращают одно результирующее значение. Второй: агрегатные функции используются с оператором SQL GROUP BY, то есть с группировкой по полям (столбцам) для получения результирующих значений в каждой группе. Рассмотрим сначала случаи использования агрегатных функций без группировки.
Функция SQL SUM
Функция SQL SUM возвращает сумму значений столбца таблицы базы данных. Она может применяться только к столбцам, значениями которых являются числа. Запросы SQL для получения результирующей суммы начинаются так:
После этого выражения следует FROM (ИМЯ_ТАБЛИЦЫ), а далее с помощью конструкции WHERE может быть задано условие. Кроме того, перед именем столбца может быть указано DISTINCT, и это означает, что учитываться будут только уникальные значения. По умолчанию же учитываются все значения (для этого можно особо указать не DISTINCT, а ALL, но слово ALL не является обязательным).
Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке .
Пример 1. Есть база данных фирмы с данными о её подразделениях и сотрудниках. Таблица Staff помимо всего имеет столбец с данными о заработной плате сотрудников. Выборка из таблицы имеет следующий вид (для увеличения картинки щёлкнуть по ней левой кнопкой мыши):
Этот запрос вернёт значение 287664,63.
А теперь упражнение для самостоятельного решения. В упражнениях уже начинаем усложнять задания, приближая их к тем, что встречаются на практике.
Пример 2. Вывести сумму комиссионных, получаемых всеми сотрудниками с должностью Clerk.
Функция SQL MIN
Функция SQL MIN также действует в отношении столбцов, значениями которых являются числа и возвращает минимальное среди всех значений столбца. Эта функция имеет синтаксис аналогичный синтаксису функции SUM.
Запрос вернёт значение 10505,90.
И вновь упражнение для самостоятельного решения. В этом и некоторых других упражнениях потребуется уже не только таблица Staff, но и таблица Org, содержащая данные о подразделениях фирмы:
Пример 4. К таблице Staff добавляется таблица Org, содержащая данные о подразделениях фирмы. Вывести минимальное количество лет, проработанных одним сотрудником в отделе, расположенном в Бостоне.
Функция SQL MAX
Аналогично работает и имеет аналогичный синтаксис функция SQL MAX, которая применяется, когда требуется определить максимальное значение среди всех значений столбца.
Запрос вернёт значение 18352,80
Пришло время упражнения для самостоятельного решения.
Функция SQL AVG
Указанное в отношении синтаксиса для предыдущих описанных функций верно и в отношении функции SQL AVG. Эта функция возвращает среднее значение среди всех значений столбца.
Результатом будет значение 6,33
В следующем упражнении для самостоятельного решения помимо агрегатной функции требуется использовать также предикат BETWEEN.
Функция SQL COUNT
Результатом будет значение 11.
Результатом будет значение 17.
В следующем упражнении для самостоятельного решения потребуется использовать подзапрос.
Агрегатные функции вместе с SQL GROUP BY (группировкой)
Теперь рассмотрим применение агрегатных функций вместе с оператором SQL GROUP BY. Оператор SQL GROUP BY служит для группировки результирующих значений по столбцам таблицы базы данных. На сайте есть урок, посвящённый отдельно этому оператору.
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 |
Результатом будет следующая таблица:
Category | Money |
Досуг | 16510 |
Недвижимость | 40530 |
Стройматериалы | 18900 |
Транспорт | 38560 |
Электротехника | 17160 |
Результатом будет следующая таблица:
Category | Part | Maximum |
Досуг | Музыка | 117 |
Недвижимость | Квартиры | 89 |
Стройматериалы | Регипс | 112 |
Транспорт | Мотоциклы | 131 |
Электротехника | Холодильники | 137 |
Итоговые и индивидуальные значения в одной таблице можно получить объединением результатов запросов с помощью оператора UNION.
Получение итоговых значений
Как узнать количество моделей ПК, выпускаемых тем или иным поставщиком? Как определить среднее значение цены на компьютеры, имеющие одинаковые технические характеристики? На эти и многие другие вопросы, связанные с некоторой статистической информацией, можно получить ответы при помощи итоговых (агрегатных) функций. Стандартом предусмотрены следующие агрегатные функции:
|
Найти минимальную и максимальную цену на персональные компьютеры:
Результатом будет единственная строка, содержащая агрегатные значения:
|
Найти имеющееся в наличии количество компьютеров, выпущенных производителем А
В результате получим
Найти количество имеющихся различных моделей ПК, выпускаемых производителем А.
Запрос похож на предыдущий, в котором требовалось определить общее число моделей, выпускаемых производителем А. Здесь же требуется найти число различных моделей в таблице РС (то есть имеющихся в продаже).
даст следующий результат
SUM (Transact-SQL)
Возвращает сумму всех, либо только уникальных, значений в выражении. Функция SUM может быть использована только для числовых столбцов. Значения NULL пропускаются.
Синтаксические обозначения в Transact-SQL
Синтаксис
Ссылки на описание синтаксиса 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
В этом примере предложение OVER не включает в себя предложение PARTITION BY. Это означает, что функция будет применяться для всех строк, возвращаемых запросом. Предложение ORDER BY, указанное в предложении OVER, определяет логический порядок применения функции SUM. Запрос возвращает суммарное общее значение продаж за год для всех территорий, указанных в предложении WHERE. Предложение ORDER BY, указанное в инструкции SELECT, определяет порядок отображения строк запроса.
Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)
В. Простой пример функции SUM
В приведенном ниже примере возвращается общее количество единиц каждого продукта, проданное в 2003 году.
Здесь приводится частичный результирующий набор.
Г. Вычисление общей суммы значений в нескольких столбцах
Первая часть результирующего набора показана ниже.