Sql вывести сумму по строкам

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», для этого выполним следующий запрос:

получим такой результат:

SUM(score)
42

Пример №2. Усложним запрос, теперь получим сумму строк столбца «score», значение которых больше 4.

SUM(score)
20

Пример №3. Сумма значений столбца «score» с датой от 25 января 2018.

SUM(score)
14

Пример №4. Сумма оценок с номерами id равными 1 и 10.

SUM(score)
7

Пример №5. Сумма оценок последних 5 записей (работает не во всех версия MySQL):

SUM(score)
17

Пример №6. Наконец добрались к примерам с группировками. Поставим задачу получить сумму всех оценок каждого студента по отдельности, для этого выполним такой запрос:

student SUM(score)
Бурученко Т. 13
Громова А. 9
Гущин В. 12
Думчев С. 8

Пример №7. Теперь рассмотрим пример с двойной группировкой. Найдем сумму оценок каждого студента по каждому предмету отдельно:

Источник

Показать сумму по столбцу после выбранных строк

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Отображение выбранных по столбцу строк на новом листе в Excel
Добрый день! Очень нужна помощь профессионалов! Задача: В файле Excel — прайс. На листе «Прайс.

Посчитать сумму выбранных строк запроса
Здравствуйте. Как можно подсчитать количество работников из итогового запроса?

Посчитать сумму выбранных строк двух разных таблиц
Каким образом можно посчитать сумму выбранных строк с двух разных таблиц DBGrid и вывести её в Edit?

В прямоугольной матрице найти сумму элементов, принадлежащих первой строке, последней строке, первому столбцу и последнему столбцу.
7.6.2. Помогите, пожалуйста, решить задачу в С++. В прямоугольной матрице найти сумму.

это таблица, результат моего неудачного запроса под картинкой.

Добавлено через 2 часа 56 минут
Сделать что бы показывал кроме записей еще , хоть где нибудь общую сумму столбца summa? Это сложно реализовать?

Добавлено через 13 минут
Почему, в моем запросе, работает именно первая выборка? Если поменять местами выборки, то выводит он общую сумму и данные первой строки и все .

rusqwe, реализовать это можно, но это не решение, а «подставка» для конкретного (приведенного на примере) случая. Можно реализовать через union all:

Запрос выведет сумму, но это не решение, это просто подстановка.

Есть еще вариант, сделать с помощью group by rollup, но группировать придется по всем полям:

Источник

Агрегатные функции SQL — SUM, MIN, MAX, AVG, COUNT

Оглавление

  • Функция SQL SUM
  • Функция SQL MIN
  • Функция SQL MAX
  • Функция SQL AVG
  • Функция SQL COUNT
  • Агрегатные функции вместе с SQL GROUP BY (группировкой)
  • Разрешены ли агрегатные функции от агрегатных функций?

Связанные темы

  • Оператор SELECT
  • GROUP BY — группировка в запросах
Назад >>

Будем учиться подводить итоги. Нет, это ещё не итоги изучения 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, но эта СУБД не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке .

Сначала работать будем с базой данных фирмы — Company1. Скрипт для создания этой базы данных, её таблиц и заполения таблиц данными — в файле по этой ссылке .

Пример 1. Есть база данных фирмы с данными о её подразделениях и сотрудниках. Таблица Staff помимо всего имеет столбец с данными о заработной плате сотрудников. Выборка из таблицы имеет следующий вид (для увеличения картинки щёлкнуть по ней левой кнопкой мыши):

Для получения суммы размеров всех заработных плат используем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

Этот запрос вернёт значение 287664,63.

А теперь упражнение для самостоятельного решения. В упражнениях уже начинаем усложнять задания, приближая их к тем, что встречаются на практике.

Пример 2. Вывести сумму комиссионных, получаемых всеми сотрудниками с должностью Clerk.

Функция SQL MIN

Функция SQL MIN также действует в отношении столбцов, значениями которых являются числа и возвращает минимальное среди всех значений столбца. Эта функция имеет синтаксис аналогичный синтаксису функции SUM.

Пример 3. База данных и таблица — те же, что и в примере 1.

Требуется узнать минимальную заработную плату сотрудников отдела с номером 42. Для этого пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

Запрос вернёт значение 10505,90.

И вновь упражнение для самостоятельного решения. В этом и некоторых других упражнениях потребуется уже не только таблица Staff, но и таблица Org, содержащая данные о подразделениях фирмы:

Пример 4. К таблице Staff добавляется таблица Org, содержащая данные о подразделениях фирмы. Вывести минимальное количество лет, проработанных одним сотрудником в отделе, расположенном в Бостоне.

Функция SQL MAX

Аналогично работает и имеет аналогичный синтаксис функция SQL MAX, которая применяется, когда требуется определить максимальное значение среди всех значений столбца.

Пример 5. База данных и таблица — те же, что и в предыдущих примерах.

Требуется узнать максимальную заработную плату сотрудников отдела с номером 42. Для этого пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

Запрос вернёт значение 18352,80

Пришло время упражнения для самостоятельного решения.

Пример 6. Вновь работаем с двумя таблицами — Staff и Org. Вывести название отдела и максимальное значение комиссионных, получаемых одним сотрудником в отделе, относящемуся к группе отделов (Division) Eastern. Использовать JOIN (соединение таблиц).

Функция SQL AVG

Указанное в отношении синтаксиса для предыдущих описанных функций верно и в отношении функции SQL AVG. Эта функция возвращает среднее значение среди всех значений столбца.

Пример 7. База данных и таблица — те же, что и в предыдущих примерах.

Пусть требуется узнать средний трудовой стаж сотрудников отдела с номером 42. Для этого пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

Результатом будет значение 6,33

В следующем упражнении для самостоятельного решения помимо агрегатной функции требуется использовать также предикат BETWEEN.

Пример 8. Работаем с одной таблицей — Staff. Вывести среднюю зарплату сотрудников со стажем от 4 до 6 лет.

Функция SQL COUNT

Функция SQL COUNT возвращает количество записей таблицы базы данных. Если в запросе указать SELECT COUNT(ИМЯ_СТОЛБЦА) . то результатом будет количество записей без учёта тех записей, в которых значением столбца является NULL (неопределённое). Если использовать в качестве аргумента звёздочку и начать запрос SELECT COUNT(*) . то результатом будет количество всех записей (строк) таблицы.

Пример 9. База данных и таблица — те же, что и в предыдущих примерах.

Требуется узнать число всех сотрудников, которые получают комиссионные. Число сотрудников, у которых значения столбца Comm — не NULL, вернёт следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

Результатом будет значение 11.

Пример 10. База данных и таблица — те же, что и в предыдущих примерах.

Если требуется узнать общее количество записей в таблице, то применяем запрос со звёздочкой в качестве аргумента функции COUNT (на MS SQL Server — с предваряющей конструкцией USE company1;):

Результатом будет значение 17.

В следующем упражнении для самостоятельного решения потребуется использовать подзапрос.

Пример 11. Работаем с одной таблицей — Staff. Вывести число сотрудников в отделе планирования (Plains).

Агрегатные функции вместе с SQL GROUP BY (группировкой)

Теперь рассмотрим применение агрегатных функций вместе с оператором 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;):

Результатом будет следующая таблица:

Category Money
Досуг 16510
Недвижимость 40530
Стройматериалы 18900
Транспорт 38560
Электротехника 17160

Пример 13. База данных и таблица — та же, что в предыдущем примере.

Используя оператор SQL GROUP BY, выяснить, в какой части каждой категории было подано наибольшее число объявлений. Пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE adportal1;):

Результатом будет следующая таблица:

Category Part Maximum
Досуг Музыка 117
Недвижимость Квартиры 89
Стройматериалы Регипс 112
Транспорт Мотоциклы 131
Электротехника Холодильники 137

Итоговые и индивидуальные значения в одной таблице можно получить объединением результатов запросов с помощью оператора UNION.

Источник

Читайте также:  Как чистить зубы нося брекеты
Оцените статью