Как найти сумму строк sql

SQL Count – How to Select, Sum, and Average Rows in SQL

In SQL, there are two built-in functions to sum or average the data in your table.

In this article I will show you how to use the SUM and AVG functions in SQL using code examples.

How to use the SUM function in SQL

If you need to add a group of numbers in your table you can use the SUM function in SQL.

This is the basic syntax:

SELECT SUM(column_name) FROM table_name;

The SELECT statement in SQL tells the computer to get data from the table.

The FROM clause in SQL specifies which table we want to list.

In this example, we have a table called students with the columns of id, name, date, and total. We want to add up the total number of candy bars sold by all of the students.

Screen-Shot-2021-09-29-at-5.42.26-AM

We can use this syntax to get the total number of candy bars sold:

SELECT SUM(total) FROM students;

The result would be 41.

Screen-Shot-2021-09-29-at-5.44.54-AM

We can also get the sum for each student using the GROUP BY clause.

The first part is to select the name and sum for the total number of candy bars sold, like this:

SELECT name, SUM(total)

The second part is to group the sum by name:

FROM students GROUP BY name;

Here is the complete code to group the total number of candy bars sold by student name.

SELECT name, SUM(total) FROM students GROUP BY name;

This is what the result would look like in our table:

Screen-Shot-2021-09-29-at-5.54.14-AM

Right now the results are grouped alphabetically by student name.

We can modify the code to sort the list of results from largest total to smallest using the ORDER BY clause.

SELECT name, SUM(total) FROM students GROUP BY name ORDER BY total DESC;

The DESC keyword tells the computer to sort from largest to smallest total.

Screen-Shot-2021-09-29-at-6.05.02-AM

If we wanted to sort the total from smallest to largest, then we would omit the DESC keyword.

SELECT name, SUM(total) FROM students GROUP BY name ORDER BY total;

Screen-Shot-2021-09-29-at-6.07.10-AM

How to use the AVG function in SQL

The AVG function finds the arithmetic mean for a group of records in a SQL table. An average, or arithmetic mean, is the sum of a group of numbers divided by the count for that group.

For example, 2+4+4+6+6+8 is 30 divided 6 which results in an average of 5.

This is the basic syntax for the AVG function:

SELECT AVG(column_name) FROM table_name;
   

In this example, we have a table called students, with columns of id , name, date, and scores.  We want to find the average of all the students’ test scores in our table.

Screen-Shot-2021-09-29-at-4.10.47-AM

We have to use this syntax to get the average for the test scores:

SELECT AVG(scores) FROM students; 

The average would be 85.333.

Screen-Shot-2021-09-29-at-4.21.21-AM

We can also use the ROUND function to round our result to the nearest integer.

SELECT ROUND(AVG(scores)) FROM students; 

Screen-Shot-2021-09-29-at-4.32.05-AM

We can also get the average for each student using the GROUP BY clause.

The first part is to select the name and average for the scores, like this:

SELECT name, ROUND(AVG(scores))

The second part is to group the average scores by name:

FROM students GROUP BY name;

This is what the code looks like all together:

SELECT name, ROUND(AVG(scores)) FROM students GROUP BY name;

This is what the result looks like in the table:

Screen-Shot-2021-09-29-at-5.17.28-AM

Conclusion

There may be times were you need to find the sum or average of records in your table.

If you need to add a group of numbers in your table you can use the SUM function in SQL.

This is the basic syntax:

SELECT SUM(column_name) FROM table_name;

If you need to arrange the data into groups, then you can use the GROUP BY clause.

The AVG function finds the arithmetic mean for a group of records in a SQL table. An average, or arithmetic mean, is the sum of a group of numbers divided by the count for that group.

This is the basic syntax.

SELECT AVG(column_name) FROM table_name;

I hope you enjoyed this tutorial and best of luck on your SQL journey.



Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started

I have a mysql table that has a number of rows, and in each row a field called «value»,
the field value will differ from row to row.
What I want, is to select all the rows and count the sum of all the «value» fields.

any idea?

Devin Burke's user avatar

Devin Burke

13.6k12 gold badges55 silver badges82 bronze badges

asked May 25, 2011 at 21:30

med's user avatar

2

Do you mean like this?

SELECT    SUM(value)
FROM      myTable

If you have multiple columns to return, simply add each non-aggregate (i.e., summed) row to the GROUP BY clause:

SELECT    firstName, lastName, SUM(value)
FROM      myTable
GROUP BY  firstName, lastName

answered May 25, 2011 at 21:33

Devin Burke's user avatar

Devin BurkeDevin Burke

13.6k12 gold badges55 silver badges82 bronze badges

2

SELECT SUM(`value`) FROM `your_table`

answered May 25, 2011 at 21:33

Tomas Markauskas's user avatar

Tomas MarkauskasTomas Markauskas

11.5k2 gold badges33 silver badges35 bronze badges

SELECT SUM(value) as total FROM table;

$row['total'];

answered May 25, 2011 at 21:34

Lawrence Cherone's user avatar

Lawrence CheroneLawrence Cherone

45.9k7 gold badges61 silver badges104 bronze badges

SELECT SUM(value)
    FROM YourTable

answered May 25, 2011 at 21:33

Joe Stefanelli's user avatar

Joe StefanelliJoe Stefanelli

132k19 gold badges237 silver badges235 bronze badges

What you’ll want is the GROUP-function named SUM.

answered May 25, 2011 at 21:34

Lukas Knuth's user avatar

Lukas KnuthLukas Knuth

25.4k15 gold badges83 silver badges111 bronze badges

This query will return the sum of value and the number of rows count:

SELECT count(*), sum(value) FROM tablename

User42's user avatar

User42

9701 gold badge16 silver badges27 bronze badges

answered Oct 19, 2016 at 10:35

Amresh's user avatar

create table #tempTable
(
    Id bigint,
    Title varchar(100),
    Amount money
)
insert into #TempTable(Title,Id,Amount)
Values
('Company 6',         10024,   120),
('Company 6',         10024,   569),
('Company 6',         10024,    53),
('Company 6',         10024,   100),
('Company 6',         10024,   564),
('Company 7',         10638,  9500),
('Company 7',         10638,   105),
('Company 7',         10638,   624)


select Title, Sum(Amount)Amount from #TempTable
group by Title,ID

drop Table #TempTable

Оператор SQL SUM() — функция, возвращающая сумму значений столбца таблицы. Используется только для числовых столбцов.

Функция SQL SUM() имеет следующий синтаксис:

SUM ( [ALL | DISTINCT] expression )

Параметр ALL — является параметром по умолчанию. Считается сумма всех строк.

При указании параметра DISTINCT — происходит подсчет только уникальных значений.


Примеры оператора SQL SUM: Имеется следующая таблица Universities:

ID UniversityName Students Faculties Professores Location Site
1 Perm State National Research University 12400 12 1229 Perm psu.ru
2 Saint Petersburg State University 21300 24 13126 Saint-Petersburg  spbu.ru
3 Novosibirsk State University 7200 13 1527 Novosibirsk nsu.ru
4 Moscow State University 35100 39 14358 Moscow msu.ru
5 Higher School of Economics 20335 12 1615 Moscow hse.ru
6 Ural Federal University 57000 19 5640 Yekaterinburg urfu.ru
7 National Research Nuclear University 8600 10 936 Moscow mephi.ru

Пример 1. Используя оператор SQL SUM найти количество студентов (Students) всех университетов в таблице:

SELECT SUM(Students)
FROM Universities

Ответ: 161935

Пример 2. Используя оператор SQL SUM найти количество преподавателей московских университетов:

SELECT SUM(Professores)
FROM Universities
WHERE Location = 'Moscow'

Ответ: 16909

Пример 3. Используя оператор SQL SUM произвести подсчет уникальных значений столбца Faculties:

SELECT SUM(DISTINCT Faculties)
FROM Universities

Ответ: 117 (примечание: в столбце Faculties присутствует 2 одинаковых записи, под ID 1 и 5. Значение столбца под ID 5 не суммируется.)

Группировка

Агрегатные функции

Последнее обновление: 19.07.2017

Агрегатные функции выполняют вычисления над значениями в наборе строк. В T-SQL имеются следующие агрегатные функции:

  • AVG: находит среднее значение

  • SUM: находит сумму значений

  • MIN: находит наименьшее значение

  • MAX: находит наибольшее значение

  • COUNT: находит количество строк в запросе

В качестве аргумента все агрегатные функции принимают выражение, которое представляет критерий дя определения значений. Зачастую, в качестве
выражения выступает название столбца, над значениями которого надо проводить вычисления.

Выражения в функциях AVG и SUM должно представлять числовое значение. Выражение в функциях
MIN, MAX и COUNT может представлять числовое или строковое значение или дату.

Все агрегатные функции за исключением COUNT(*) игнорируют значения NULL.

Avg

Функция Avg возвращает среднее значение на диапазоне значений столбца таблицы.

Пусть в базе данных у нас есть таблица товаров Products, которая описывается следующими выражениями:

CREATE TABLE Products
(
    Id INT IDENTITY PRIMARY KEY,
    ProductName NVARCHAR(30) NOT NULL,
    Manufacturer NVARCHAR(20) NOT NULL,
    ProductCount INT DEFAULT 0,
    Price MONEY NOT NULL
);
 
INSERT INTO Products 
VALUES
('iPhone 6', 'Apple', 3, 36000),
('iPhone 6S', 'Apple', 2, 41000),
('iPhone 7', 'Apple', 5, 52000),
('Galaxy S8', 'Samsung', 2, 46000),
('Galaxy S8 Plus', 'Samsung', 1, 56000),
('Mi6', 'Xiaomi', 5, 28000),
('OnePlus 5', 'OnePlus', 6, 38000)

Найдем среднюю цену товаров из базы данных:

SELECT AVG(Price) AS Average_Price FROM Products

Для поиска среднего значения в качестве выражения в функцию передается столбец Price. Для получаемого значения устанавливается псевдоним Average_Price, хотя можно его и не
устанавливать.

Функция avg в T-SQL

Также мы можем применить фильтрацию. Например, найти среднюю цену для товаров какого-то определенного производителя:

SELECT AVG(Price) FROM Products
WHERE Manufacturer='Apple'

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

SELECT AVG(Price * ProductCount) FROM Products

Count

Функция Count вычисляет количество строк в выборке. Есть две формы этой функции.
Первая форма COUNT(*) подсчитывает число строк в выборке:

SELECT COUNT(*) FROM Products

Функция count в T-SQL в MS SQL Server

Вторая форма функции вычисляет количество строк по определенному столбцу, при этом строки со значениями NULL игнорируются:

SELECT COUNT(Manufacturer) FROM Products

Min и Max

Функции Min и Max возвращают соответственно минимальное и максимальное значение по столбцу.
Например, найдем минимальную цену среди товаров:

SELECT MIN(Price) FROM Products

Поиск максимальной цены:

SELECT MAX(Price) FROM Products

Данные функции также игнорируют значения NULL и не учитывают их при подсчете.

Sum

Функция Sum вычисляет сумму значений столбца. Например, подсчитаем общее количество товаров:

SELECT SUM(ProductCount) FROM Products

Функция SUM в T-SQL

Также вместо имени столбца может передаваться вычисляемое выражение. Например, найдем общую стоимость всех имеющихся товаров:

SELECT SUM(ProductCount * Price) FROM Products

All и Distinct

По умолчанию все вышеперечисленных пять функций учитывают все строки выборки для вычисления результата. Но выборка может содержать повторяющие значения.
Если необходимо выполнить вычисления только над уникальными значениями, исключив из набора значений повторяющиеся данные, то для
этого применяется оператор DISTINCT.

SELECT AVG(DISTINCT ProductCount) AS Average_Price FROM Products

По умолчанию вместо DISTINCT применяется оператор ALL, который выбирает все строки:

SELECT AVG(ALL ProductCount) AS Average_Price FROM Products

Так как этот оператор неявно подразумевается при отсутствии DISTINCT, то его можно не указывать.

Комбинирование функций

Объединим применение нескольких функций:

SELECT COUNT(*) AS ProdCount,
	   SUM(ProductCount) AS TotalCount,
       MIN(Price) AS MinPrice,
       MAX(Price) AS MaxPrice,
       AVG(Price) AS AvgPrice
FROM Products

Агрегатные функции в T-SQL и MS SQL Server

Понравилась статья? Поделить с друзьями:
  • Как найти человека в барнауле по фамилии
  • Как составить пан продаж
  • Потеря денег как найти
  • Как найти сумму ряда чисел python
  • Как найти время движения в воде