Как найти среднее число sql

In this article, we are going to see how to find the average value in a column in SQL.  A column in the SQL table is the vertical catalog structure. In this article, we will be using the Microsoft SQL Server as our database.

For the purpose of example, we will be creating a sample table and performing the same operations on it.

Table Definition:

We have the following car table in our database :

CREATE TABLE car (
companyid integer ,
companyname varchar(20) ,
totalmodels integer )

The above query creates a car table for us.

Adding Data to Table:

To insert values into the table we need to use the insert statement. Use the below statement to add data to the car table:

INSERT INTO car values(1,'maruti  suzuki',10);
INSERT INTO car values(2,'tata',12);
INSERT INTO car values(3,'volkswagen',8);

The above query will add the data to the car table.

Note: We have to insert values according to the table created. For example, we created a car table with companyid as integer, companyname as varchar, and totalmodels as an integer. So, we need to insert an integer, a character, and an integer else we may get an error.

To verify the contents of the table use the below statement:

SELECT * FROM car;

This will show us our created table as shown below:

Average of all values in a column

For this, we need to use avg() function. We have to pass the column name as a parameter. The avg() function has the following syntax:

SELECT AVG( column_name ) FROM table_name;
  • The avg() function can be used with the SELECT query for retrieving data from a table.

The below query can be used to find the average of the totalmodels column of our cars table:

SELECT AVG(totalmodels) FROM car;

Output :

Let’s verify the output. The average of 10, 12, and 18 is 10.  Hence, we have successfully found out the average of all values n a column of a table.

Finding out the Average without using the AVG() function –

In this approach we will see how we can find out the average value of a column without using the AVG() function. For this purpose we will use two function SUM() and COUNT(). Firstly we will sum all of the values of a certain column and then divide it with the number of elements of that column.

Considering the table is already created and the values are being inserted.

Syntax of SUM()

SELECT SUM(Col_name) FROM Table_Name;

Syntax of COUNT() 

SELECT COUNT(Col_Name) FROM Table_Name;

SQL Code –

SELECT SUM(totalmodels) / COUNT (totalmodels) AS Average FROM car; 

Output – 

Here in this code an alias “Average” has been used to make the output column name “Average”, if the user doesn’t want to use that then they might skip this.

Last Updated :
25 Mar, 2023

Like Article

Save Article

Ранее в курсе мы научились выбирать все записи из таблицы. Например, мы можем выбрать все записи из таблицы пользователей с помощью такого запроса:

Запрос вернет нам много строк, но точное их количество мы не знаем. Чтобы это выяснить, можно использовать функцию COUNT — она возвращает количество записей в выборке.

Ответить на вопрос «А сколько записей содержится в таблице users?» можно с помощью такого запроса:

SELECT COUNT(*) FROM users;
count

99

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

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

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

SELECT COUNT(id) FROM users;
count

99

Этот запрос также вернул значение 99 — это количество строк, id которых не равен NULL.

Подадим в качестве аргумента поле email_confirmed:

SELECT COUNT(email_confirmed) FROM users;
count

0

Этот запрос вернул 0, потому что в таблице поле email_confirmed не содержится никаких данных.

Обратите внимание, что COUNT возвращает количество записей в запросе, а не в таблице:

SELECT COUNT(*) FROM users WHERE gender = 'female';
count

56

Этот запрос вернет количество девушек среди всех пользователей.

  1. Главная

  2. Туториалы

  3. Базы данных

  4. SQL

Функция COUNT() возвращает количество строк, соответствующих заданным критериям.
Функция AVG() возвращает среднее значение числового столбца.
Функция SUM() возвращает общую сумму числового столбца.

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;

Пример COUNT()

Следующий оператор SQL находит количество товаров:

Пример:

SELECT COUNT(product_id)
FROM product;

Пример AVG()

Следующий оператор SQL находит среднюю цену всех товаров:

Пример:

SELECT AVG(price)
FROM product;

Пример SUM()

Следующий оператор SQL находит сумму полей доставка «delivery» в таблице «invoice»:

Пример:

SELECT SUM(delivery)
FROM invoice;

Оператор SQL AVG() — Функция возвращающая среднее значение столбца. Применима только для числовых столбцов!

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

AVG(column_name)

Примеры оператора SQL AVG: Имеется следующая таблица 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 AVG найти среднее число студентов (Students) всех университетов:

SELECT AVG(Students)
FROM Universities

Ответ: 23133

Пример 2. Используя оператор SQL AVG найти среднее число факультетов (Faculties) в университетах Москвы:

SELECT AVG(Faculties)
FROM Univetsities
WHERE Location = 'Moscow'

Ответ: 20

Группировка

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

Последнее обновление: 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

Добавить комментарий