Функция 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 условие
Таблицы для примеров
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 |
Меняем таблицу для примеров
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 прямо сейчас
- Бесплатный курс
Если этот сайт оказался вам полезен, пожалуйста, посмотрите другие наши статьи и разделы.