Как найти максимальное значение в sqlite

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

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

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

  • AVG: вычисляет среднее значение

  • SUM: вычисляет сумму значений

  • MIN: вычисляет наименьшее значение

  • MAX: вычисляет наибольшее значение

  • COUNT: вычисляет количество строк в запросе

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

Для рассмотрения агрегатных функций возьмем следующую таблицу products, которая хранит набор товаров:

DROP TABLE IF EXISTS products;
CREATE TABLE products
(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    company TEXT NOT NULL,
    product_count INTEGER DEFAULT 0,
    price INTEGER
);
  
INSERT INTO products (name, company, product_count, price)
VALUES
('iPhone 13', 'Apple', 3, 76000),
('iPhone 12', 'Apple', 3, 51000),
('iPhone 11', 'Apple', 3, 43000),
('Galaxy S21', 'Samsung', 2, 56000),
('Galaxy S20', 'Samsung', 1, 51000),
('P40 Pro', 'Huawei', 5, 36000),
('Nokia XR20', 'HMD Global', 2, 45000),
('T11 Pro', 'Xiaomi', 1, 54000);

Avg

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

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

SELECT AVG(price) AS average_price FROM products;

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

Функция avg и поиск среднего значения в SQLite

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

SELECT AVG(price) FROM products
WHERE company='Apple';

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

SELECT AVG(price * product_count) FROM products;

Дополнительно функция AVG может принимать два оператора:

AVG([ALL | DISTINCT] выражение);

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

SELECT AVG(DISTINCT price) FROM products;

Count

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

SELECT COUNT(*) FROM products;

Функция count в SQLite и вычисление количества строк

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

SELECT COUNT(company) FROM products;

Однако выражение выше подсчитывает количество всех строк, где в столбце company нет значения NULL, то есть количество в том числе повторяющихся значений.
Чтобы одсчитать количество только уникальных значений, необходимо использовать оператор DISTINCT:

SELECT COUNT(DISTINCT company) FROM products;

Min и Max

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

SELECT MIN(price), MAX(price) FROM products;

Функции MIN и MAX в SQLite

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

Sum

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

SELECT SUM(product_count) FROM products;

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

SELECT SUM(product_count * price) FROM products;

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

SELECT SUM(DISTINCT price) FROM products;

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

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

SELECT COUNT(DISTINCT company) AS companies_count, 
SUM(product_count) AS total_count,
MIN(price) AS min_price,
MAX(price) AS max_price,
AVG(price) AS avg_price
FROM products;

Summary: in this tutorial, you will learn how to use SQLite MAX function to get the maximum value of all values in a group.

Introduction to SQLite MAX function

The SQLite MAX function is an aggregate function that returns the maximum value of all values in a group. You can use the MAX function to accomplish a lot of things.

For example, you can use the MAX function to find the most expensive products, find the biggest item in its group, etc.

The following illustrates the basic syntax of the MAX function.

MAX([ALL|DISTINCT] expression);Code language: SQL (Structured Query Language) (sql)

The expression can be a column of a table or an expression that consists of operands, which are the columns, and operators like +, *, etc.

There are some important notes about MAX function:

  • First, the MAX function ignores NULL values.
  • Second, unlike the COUNT function, the DISTINCT clause is not relevant to the MAX function.
  • Third, because a column can store mixed types of data e.g., integer, real, text, blob, and NULL in SQLite, when comparing values to find the maximum value, the MAX function uses the rules mentioned in the data types tutorial.

The SQLite MAX function examples

We’ll use the tracks table in the sample database for the demonstration.

To get the largest track in bytes, you apply the MAX function to the bytes column as the following statement:

SELECT MAX(bytes) FROM tracks;Code language: SQL (Structured Query Language) (sql)

Try It

SQLite MAX function example

SQLite MAX function in the subquery example

To get the complete information of the biggest track, you use the subquery as follows:

SELECT
	TrackId,
	Name,
	Bytes
FROM
	tracks
WHERE
	Bytes = (SELECT MAX(Bytes) FROM tracks);Code language: SQL (Structured Query Language) (sql)

Try It

SQLite MAX function with Subquery

First, the inner query returns highest bytes of all tracks using the MAX function. Then, the outer query gets the largest track whose size equals the largest size returned by the subquery.

SQLite MAX function and GROUP BY clause example

You can find the largest track in each album using the MAX function with the GROUP BY clause.

First, the GROUP BY clause groups the tracks into groups based on albums. Then, the MAX function returns the largest tracks for each group.

See the following query:

SELECT
	AlbumId,
	MAX(bytes)
FROM
	tracks
GROUP BY
	AlbumId;Code language: SQL (Structured Query Language) (sql)

Try It

SQLite MAX with GROUP BY clause example

SQLite MAX function and HAVING clause

You can combine the MAX function with the HAVING clause to filter the groups based on their largest values.

For example, to find the albums and their largest track where the sizes of the largest tracks are greater than 6 MB (about ~ 6000000), you use the following statement:

SELECT
	albumid,
	max(bytes)
FROM
	tracks
GROUP BY
	albumid
HAVING MAX(bytes) > 6000000;Code language: SQL (Structured Query Language) (sql)

Try It

SQLite MAX function with HAVING

In this tutorial, you have learned how to use the SQLite MAX function to find the maximum value in a group of values.

Was this tutorial helpful ?

«SQLite Последнее обновление 09 апреля 2019 07:17:01 (UTC / GMT +8 часов)

script1adsense2code

script1adsense3code

Описание

Агрегатная функция max () возвращает максимальное значение всех значений в группе. Максимальное значение — это значение, которое будет возвращено последним в ORDER BY в том же столбце. Функция возвращает NULL тогда и только тогда, когда в группе нет ненулевых значений.

Синтаксис:

 макс (выражение); 

Где expr это выражение.

Пример: функция SQLite max ()

Следующий оператор SQLite вернет максимальное значение book_price из таблицы book_mast.

Пример таблицы: book_mast

Пример вывода:

 sqlite> SELECT MAX (book_price)
...> FROM book_mast;
MAX (book_price)
---------------
95 

Пример: функция SQLite max () с GROUP BY, HAVING

Функция SQLite MAX () извлекает максимальное значение из выражения, которое подверглось операции группировки с помощью предложения GROUP BY и отфильтровывалось с помощью предложения HAVING, за которым следовало некоторое условие. Следующий оператор SQLite извлечет те страны («страны»), которые имеют восемь или более ветвей.

Пример таблицы: издатель

Пример вывода:

 sqlite> ВЫБЕРИТЕ страну, МАКС (no_of_branch)
  ...> От издателя
  ...> ГРУППА ПО СТРАНЕ
  ...> HAVING MAX (no_of_branch)> = 8;
  Страна МАКС (no_of_branch)
 ---------- -----------------
 Австралия 6
 Индия 10
 Великобритания 8
 США 25 

Пример: функция SQLite max () с GROUP BY

Функция SQLite MAX () с GROUP BY извлекает максимальное значение выражения, которое подверглось операции группировки (обычно на основе одного столбца или списка столбцов, разделенных запятыми). Следующий оператор SQLite извлечет все «cate_id» и максимальный «book_price» в каждой группе «cate_id». В предложении «GROUP BY» сгруппированы «cate_id».

Пример таблицы: book_mast

Пример вывода:

 sqlite> SELECT cate_id, MAX (book_price)
  ...> ОТ book_mast
  ...> GROUP BY cate_id;
  cate_id MAX (book_price)
---------- ----------------
CA001 85
CA002 250
CA003 56
CA004 95
CA005 50,5

Иллюстрированная презентация

«SQLite

Функция SQLite MAX () с группировкой по двум столбцам

Следующий оператор SQLite извлечет те страны («страна») и города-издатели («pub_city»), которые имеют максимальное количество ветвей («no_of_branch») в каждой группе «country» и «pub_city».

Пример таблицы: издатель

Пример вывода:

 sqlite> ВЫБЕРИТЕ страну, pub_city, MAX (no_of_branch)
 ...> От издателя
 ...> GROUP BY страна, pub_city;
 страна pub_city MAX (no_of_branch)
 ---------- ---------- -----------------
 Австралия Аделаида 6
 Индия Мумбаи 10
 Индия Нью-Дели 10
 Великобритания Кембридж 6
 Великобритания Лондон 8
 США Хьюстан 25
 США Нью-Йорк 15
 

SQLite MAX с группировкой и упорядочением по

Следующий оператор SQLite извлечет те страны («страна») и города-издатели («pub_city»), которые имеют максимальное количество ветвей («no_of_branch») для каждой группы «country» и «pub_city». В предложении «GROUP BY» сгруппированы «страна» и «pub_city». Столбец «страна» отсортирован в порядке возрастания с использованием предложения ORDER BY.

Пример вывода:

 sqlite> ВЫБЕРИТЕ страну, pub_city, MAX (no_of_branch)
 ...> От издателя
 ...> GROUP BY страна, pub_city
 ...> ЗАКАЗАТЬ ПО СТРАНЕ;
 страна pub_city MAX (no_of_branch)
 ---------- ---------- -----------------
 Австралия Аделаида 6
 Индия Мумбаи 10
 Индия Нью-Дели 10
 Великобритания Кембридж 6
 Великобритания Лондон 8
 США Хьюстан 25
 США Нью-Йорк 15
 

Функция SQLite MAX () с

Функция SQLite MAX () извлекает максимальное значение выражения, если функция сопровождается предложением DISTINCT. Следующий оператор SQLite извлечет максимальное количество страниц категории (‘cat_id’) (‘no_page’) из таблицы ‘book_mast’.

Пример таблицы: book_mast

Пример вывода:

 sqlite> SELECT cate_id, MAX (DISTINCT no_page)
  ...> ОТ book_mast
  ...> GROUP BY cate_id;
  cate_id MAX (DISTINCT no_page)
  ---------- ---------------------
  CA001 345
  CA002 600
  CA003 95
  CA004 350
  CA005 88
  

Предыдущая: Group_Concat ()
Далее: Мин ()

В этом учебном пособии вы узнаете, как использовать SQLite функцию max с синтаксисом и примерами.

Описание

SQLite функция max возвращает максимальное значение выражения.

Синтаксис

Синтаксис функции max в SQLite:

SELECT max(aggregate_expression)
FROM tables
[WHERE conditions];

ИЛИ Синтаксис max при группировке результатов по одному или нескольким столбцам:

SELECT expression1, expression2, … expression_n,
max(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, … expression_n;

Параметры или аргументы

expression1, expression2, … expression_n
Выражения, которые не инкапсулированы в функцию max и должны быть включены в оператор GROUP BY в конце SQL предложения.

aggregate_expression
Это столбец или выражение, из которого будет возвращено максимальное значение.

tables
Таблицы, из которых вы хотите получить записи. В операторе FROM должна быть указана хотя бы одна таблица.

WHERE conditions
Необязательный. Это условия, которые должны быть соблюдены для выбранных записей.

Применение

Функция max может использоваться в следующих версиях SQLite:

  • SQLite 3.8.6, SQLite 3.8.x, SQLite 3.7.x, SQLite 3.6.x

Пример — с одним выражением

Рассмотрим некоторые примеры функций maxite в SQLite и узнаем, как использовать функцию max в SQLite.

Например, вы можете узнать, какая максимальная зарплата всех сотрудников.

SELECT max(salary) AS «Highest Salary»

  FROM employees;

В этом примере функции max мы указали выражению max (salary) псевдоним «Highest Salary».

Пример — использование GROUP BY

В некоторых случаях вам потребуется использовать оператор GROUP BY с функцией max.

Например, вы также можете использовать функцию max, чтобы вернуть город и максимальную зарплату в городе, штата ‘Nevada’.

SELECT city, max(salary) AS «Highest salary»

  FROM employees

WHERE state = ‘Nevada’

GROUP BY city;

Поскольку в вашем операторе SELECT указан один столбец, который не инкапсулирован в функции max, вы должны использовать оператор GROUP BY. Поэтому поле city должно быть указано в операторе GROUP BY.

Here we will learn what is SQLite Max() function and how to use SQLite Max() function with WHERE, Group By, Having to get maximum value from a column with examples.

SQLite MAX() Function

In SQLite MAX() Function is an aggregate function that is used to get the maximum value of specified expression or column.

Generally, in SQLite MAX() function will work with non-NULL numeric values to return the maximum value of a column in a table. In case if the table column contains only NULL values means MAX() function will return NULL.

Syntax of SQLite Max() Function

Following is the syntax of the SQLite max() function to get the maximum value of a defined expression.

Select MAX(Expressionfrom tablename

[WHERE condition]

[GROUP BY Expression];

In above SQLite MAX() function syntax we defined multiple parameters those are

Expression – Its column or expression which we used to get the maximum value of defined column or expression.

Tablename – Its name of the table which we wish to retrieve records from.

[WHERE Condition] – If we have any specific conditions to get the maximum value of column then we need to specify WHERE based on our requirements. It’s optional.

[Group By Expression] – If we want to get maximum value based on particular Expression then we need to use Group By. It’s optional.

Example of SQLite MAX() Function

Now we will see how to use MAX() function in SQLite to get the maximum value of an expression with examples for that we need to create two tables called dept_master and emp_master using the following query.

To create and insert some data in dept_master table execute following query.

CREATE TABLE dept_master

(dept_id INTEGER PRIMARY KEY AUTOINCREMENT,

dept_name TEXT);

INSERT INTO dept_master(dept_name)

VALUES(‘Admin’),

(‘Sales’),

(‘Quality Control’),

(‘Marketing’);

Once we create and insert data execute following query to see the data of dept_master table. 

sqliteSELECT FROM dep_master;

dept_id     dept_name

———-  ———-

1           Admin

2           Sales

3           Quality Control

4           Marketing

Same way execute the following queries to create and insert some data in the emp_master table.

CREATE TABLE emp_master

(emp_id INTEGER PRIMARY KEY AUTOINCREMENT,

first_name TEXT,

last_name TEXT,

salary NUMERIC,

dept_id INTEGER);

INSERT INTO emp_master

values (1,‘Honey’,‘Patel’, 10100,1),

(2,‘Shweta’,‘Jariwala’, 19300,2),

(3,‘Vinay’,‘Jariwala’, 35100,3),

(4,‘Jagruti’,‘Viras’, 9500,2),

(5,‘Shweta’,‘Rana’,12000,3),

(6,‘sonal’,‘Menpara’, 13000,1),

(7,‘Yamini’,‘Patel’, 10000,2),

(8,‘Khyati’,‘Shah’, 50000,3),

(9,‘Shwets’,‘Jariwala’,19400,2);

Now run the following query to check the records of emp_master table.

sqliteSELECT FROM emp_master;

emp_id      first_name  last_name   salary      dept_id

———-  ———-  ———-  ———-  ———-

1           Honey       Patel       10100       1

2           Shweta      Jariwala    19300       2

3           Vinay       Jariwala    35100       3

4           Jagruti     Viras       9500        2

5           Shweta      Rana        12000       3

6           Sonal       Menpara     13000       1

7           Yamini      Patel       10000       2

8           Khyati      Shah        50000       3

9           Shwets      Jariwala    19400       2

Now write the query like as shown following to get the maximum salary of employees from the emp_master table.

sqliteSELECT MAX(salaryFROM emp_master;

MAX(salary)

————

50000

SQLite MAX() Function with Group By Clause

Suppose in SQLite if we want to get the maximum value of an expression based on the group like calculating the maximum salary of each department then we need to use SQLite MAX() function with Group By clause to return maximum value based on our requirements.

Following is the SQLite query to use MAX() function with Group By clause to get the maximum salary of each department.

sqliteSELECT d.dept_name,max(e.salary),e.first_name

FROM emp_master e, dept_master d

WHERE e.dept_id d.dept_id

GROUP BY e.dept_id;

dept_name         max(e.salary)  first_name

———-        ————-  ———-

Admin             13000          Sonal

Sales             19400          Shwets

Quality Control   500000         Khyati

If you observe above query we got maximum salary of each department by using Group By clause with SQLite MAX() function.

SQLite MAX() Function with Having Clause

Suppose if we want to get the maximum value of particular group alone then by using Having clause with SQLite MAX() function we can easily get the required result.

Following is the SQLite query which will return maximum salary of each department whose department name starts with “sa”.

sqliteSELECT d.dept_name,MAX(e.salary),e.first_name

FROM emp_master e, dept_master d

WHERE e.dept_id d.dept_id

GROUP BY e.dept_id

HAVING d.dept_name LIKE ‘sa%’;

dept_name   max(e.salary)  first_name

———-  ————-  ———-

Sales       19400          Shwets

The above example returns maximum salary of each department whose department name starts with “sa”.

This is how we can use SQLite MAX() function to get the maximum value of a column in a table based on our requirements. 

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти жесткую линзу
  • Как найти частоту колебаний точек среды
  • Как найти длины отрезков параллелограмма
  • Как можно найти карту сбербанка по геолокацию
  • Как найти утешительные слова

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии