Какой оператор в sql посчитать количество записей
Перейти к содержимому

Какой оператор в sql посчитать количество записей

  • автор:

Функция SQL COUNT()

Оператор SQL COUNT() — функция возвращающая количество записей (строк) таблицы. Запись функции с указанием столбца (синтаксис ниже) вернет количество записей конкретного столбца за исключением NULL записей.

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

COUNT(column_name)

Запись функции с указанием маски «*» вернет количество всех записей в таблице.

COUNT(*)

Примеры оператора SQL COUNT: Имеется следующая таблица 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 COUNT:

SELECT COUNT(*)
FROM Universities

Пример 2. Найти количество университетов расположенных в Москве, используя оператор SQL COUNT:

SELECT COUNT(*) FROM Universities WHERE Location = 'Moscow'

Пример 3. Найти количество университетов с больше чем 20 факультетами, используя оператор SQL COUNT:

SELECT COUNT(*) FROM Universities WHERE Faculties > 20

Как в sql посчитать количество повторяющихся значений

Можно попробовать использовать функцию COUNT() в сочетании с оператором GROUP BY .

Предположим, у нас есть таблица «orders» с колонками «customer_name» и «order_date» , и мы хотим посчитать, сколько заказов было сделано каждым клиентом. Мы можем написать следующий SQL-запрос:

Этот запрос выберет все уникальные значения из колонки «customer_name» в таблице «orders» и подсчитает количество строк, связанных с каждым уникальным значением. Результатом запроса будет таблица со столбцами «customer_name» и «order_count» , в которой каждая строка будет показывать клиента и количество его заказов.

Функция COUNT

Функция COUNT подсчитывает количество записей в таблице. Условие, по которому будут выбираться записи, задается с помощью команды WHERE . Команда WHERE не является обязательной, если ее не указать — будут подсчитаны все записи в таблице.

Синтаксис

Подсчет всех записей:

SELECT COUNT(*) FROM имя_таблицы WHERE условие

Подсчет всех записей, где заданное поле не равно NULL:

SELECT COUNT(поле) FROM имя_таблицы WHERE условие

Только уникальные значения поля:

SELECT COUNT(DISTINCT поле) FROM имя_таблицы WHERE условие

Таблицы для примеров

таблица employees

id
айди
name
имя
age
возраст
salary
зарплата
1 user1 23 400
2 user2 25 500
3 user3 23 500
4 user4 30 900
5 user5 27 500
6 user6 28 900

Пример

Давайте подсчитаем в таблице всех работников с возрастом 23 года:

SELECT COUNT(*) as count FROM employees WHERE age=23

Результат выполнения SQL запроса:

count
результат подсчета
2

Пример

Давайте подсчитаем в таблице количество разных зарплат (их будет 3 штуки: 400 , 500 и 1000):

SELECT COUNT(DISTINCT salary) as count FROM employees

Результат выполнения SQL запроса:

count
результат подсчета
3

Пример

Давайте подсчитаем в таблице одновременно количество разных возрастов и количество разных зарплат:

SELECT COUNT(DISTINCT age) as count1, COUNT(DISTINCT salary) as count2 FROM employees

Результат выполнения SQL запроса:

count1
количество возрастов
count2
количество зарплат
5 3

Меняем таблицу для примеров

таблица employees

id
айди
name
имя
age
возраст
salary
зарплата
1 user1 23 NULL
2 user2 25 500
3 user3 23 NULL

Пример

Давайте подсчитаем количество всех записей:

SELECT COUNT(*) as count FROM employees

Результат выполнения SQL запроса:

count
результат подсчета
3

А теперь подсчитаем количество зарплат, не равных NULL:

SELECT COUNT(salary) as count FROM employees

Результат выполнения SQL запроса:

count
результат подсчета
1

Смотрите также

  • команду DISTINCT ,
    которая позволяет подсчитывать только уникальные значения поля
  • команду GROUP BY,
    которая позволяет группировать записи

SQL — Урок 8. Группировка записей и функция COUNT()

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

А что, если нам надо лишь узнать сколько сообщений на форуме имеется. Для этого можно воспользоваться встроенной функцией COUNT(). Эта функция подсчитывает число строк. Причем, если в качестве аргумента этой функции выступает *, то подсчитываются все строки таблицы. А если в качестве аргумента указывается имя столбца, то подсчитываются только те строки, которые имеют значение в указанном столбце.

В нашем примере оба аргумента дадут одинаковый результат, т.к. все столбцы таблицы имеют тип NOT NULL. Давайте напишем запрос, используя в качестве аргумента столбец id_topic:

SELECT COUNT(id_topic) FROM posts;

Итак, в наших темах имеется 4 сообщения. Но что, если мы хотим узнать сколько сообщений имеется в каждой теме. Для этого нам понадобится сгруппировать наши сообщения по темам и вычислить для каждой группы количество сообщений. Для группировки в SQL используется оператор GROUP BY. Наш запрос теперь будет выглядеть так:

SELECT id_topic, COUNT(id_topic) FROM posts GROUP BY id_topic;

Оператор GROUP BY указывает СУБД сгруппировать данные по столбцу id_topic (т.е. каждая тема — отдельная группа) и для каждой группы подсчитать количество строк:

Ну вот, в теме с у нас 3 сообщения, а с — одно. Кстати, если бы в поле id_topic были возможны отсутствия значений, то такие строки были бы объединены в отдельную группу со значением NULL.

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

SELECT id_topic, COUNT(id_topic) FROM posts GROUP BY id_topic HAVING COUNT(id_topic) > 2;

В результате имеем:

В уроке 4 мы рассматривали, какие условия можно задавать оператором WHERE, те же условия можно задавать и оператором HAVING, только надо запомнить, что WHERE фильтрует строки, а HAVING — группы.

Итак, сегодня мы узнали, как создавать группы и как подсчитать количество строк в таблице и в группах. Вообще вместе с оператором GROUP BY можно использовать и другие встроенные функции, но их мы будем изучать позже.

Научись программировать на Python прямо сейчас!

  • Научись программировать на Python прямо сейчас
  • Бесплатный курс

Если этот сайт оказался вам полезен, пожалуйста, посмотрите другие наши статьи и разделы.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *