Пример count sql: Функция SQL COUNT: примеры, синтаксис

Содержание

Функция COUNT — подсчет количества записей

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

Условие, по которому будут выбираться записи,
задается с помощью команды WHERE.

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

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

См. также команду GROUP BY,
которая позволяет группировать записи и затем с помощью COUNT
подсчитывать количество в группах.

Синтаксис

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

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

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

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

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

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

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1Дима23400
2Петя25500
3Вася23500
4Коля301000
5Иван27500
6Кирилл281000

Пример

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

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

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

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

Пример

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

SELECT COUNT(DISTINCT salary) as count FROM workers

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

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

Пример

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

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

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

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

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

Все примеры ниже будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1Дима23NULL
2Петя25500
3Вася23NULL

Пример

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

SELECT COUNT(*) as count FROM workers

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

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

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

SELECT COUNT(salary) as count FROM workers

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

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

← Предыдущая страница
Следующая страница →

Команда GROUP BY — группировка при выборке из базы данных

Команда GROUP BY позволяет группировать результаты при выборке
из базы данных.

К сгруппированным результатам можно применять любые функции
(смотрите примеры).

См. также команду HAVING,
которая позволяет накладывать условие на группы, созданные с помощью GROUP BY.

Синтаксис

SELECT * FROM имя_таблицы WHERE условие GROUP BY поле_для_группировки

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1Дима23100
2Петя23200
3Вася23300
4Коля241000
5Иван242000
6Кирилл251000

Пример

В данном примере записи группируются по возрасту (будет 3 группы — 23 года, 24 года и 25 лет).
Затем для каждой группы применяется функция SUM,
которая суммирует зарплаты внутри данной группы.

В результате для каждой из групп (23 года, 24 года и 25 лет) будет подсчитана суммарная
зарплата внутри этой группы:

SELECT age, SUM(salary) as sum FROM workers GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
sum
сумма
23600
243000
251000

Пример

В данном примере мы используем дополнительное условие WHERE,
чтобы взять не все записи из таблицы:

SELECT age, SUM(salary) as sum FROM workers WHERE id>=2 GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
sum
сумма
23500
243000
251000

Пример

В данном примере записи группируются по возрасту (будет 3 группы — 23 года, 24 года и 25 лет).
Затем для каждой группы применяется функция MAX,
которая находит максимальную зарплату внутри данной группы:

SELECT age, MAX(salary) as max FROM workers GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
max
максимальная зарплата
23300
242000
251000

Пример

А теперь с помощью функции MIN
найдется минимальная зарплата внутри данной группы:

SELECT age, MIN(salary) as min FROM workers GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
min
минимальная зарплата
23100
241000
251000

Пример

А теперь с помощью функции COUNT
найдется количество записей в группе:

SELECT age, COUNT(*) as count FROM workers GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
count
количество
233
242
251

← Предыдущая страница
Следующая страница →

Функции SQL COUNT(), AVG() и SUM()

❮ Предыдущий
Далее ❯


Функции SQL COUNT(), AVG() и SUM()

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

COUNT() Синтаксис

SELECT COUNT( имя_столбца )
FROM имя_таблицы
ГДЕ условие ;

Функция AVG() возвращает среднее значение числового столбца.

AVG() Синтаксис

SELECT AVG( имя_столбца )
FROM имя_таблицы
ГДЕ условие ;

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

SUM() Синтаксис

SELECT SUM( имя_столбца )
FROM имя_таблицы
ГДЕ условие ;


Демонстрационная база данных

Ниже приведен выбор из таблицы «Продукты» в образце базы данных «Борей»:

ID продукта Название продукта идентификатор поставщика ID категории Блок Цена
1 Шезлонги 1 1 10 коробок по 20 пакетов 18
2 Чанг 1 1 Бутылки на 24–12 унций 19
3 Анисовый сироп 1 2 12 флаконов по 550 мл 10
4 Каджунская приправа от шеф-повара Антона 2 2 48 банок на 6 унций 22
5 Гамбо-микс от шеф-повара Антона 2 2 36 коробок 21,35


COUNT() Пример

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

Пример

SELECT COUNT(ProductID)
FROM Products;

Попробуйте сами »

Примечание. Значения NULL не учитываются.


AVG() Пример

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

Пример

SELECT AVG(Price)
FROM Products;

Попробуйте сами »

Примечание. Значения NULL игнорируются.


Демонстрационная база данных

Ниже приведена выборка из таблицы OrderDetails в Northwind
образец базы данных:

OrderDetailID ID заказа ID продукта Количество
1 10248 11 12
2 10248 42 10
3 10248 72 5
4 10249 14 9
5 10249 51 40

SUM() Пример

Следующая инструкция SQL находит сумму полей «Количество».
в таблице «Сведения о заказе»:

Пример

ВЫБЕРИТЕ СУММУ (количество)
ИЗ Детали заказа;

Попробуйте сами »

Примечание. Значения NULL игнорируются.


Проверьте себя с помощью упражнений

Упражнение:

Используйте правильную функцию, чтобы вернуть количество записей, для которых значение Цена равно 18.

ВЫБРАТЬ (*)
ИЗ продуктов
 Цена = 18;
 

Начать упражнение

❮ Предыдущий
Далее ❯

NEW

Мы только что запустили
видео W3Schools

Узнать

ПАЛЕТКА ЦВЕТОВ
КОД ИГРЫ

Играть в игру




Лучшие учебники

Учебник по HTML
Учебник по CSS
Учебник по JavaScript
Учебник How To
Учебник по SQL
Учебник по Python
Учебник по W3.CSS
Учебник по Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery

Top 9092

9002 Справочник
Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3. CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery

Основные примеры

Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery


ФОРУМ |
О

W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения.
Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания.
Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования,
куки-файлы и политика конфиденциальности.

Copyright 1999-2022 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.

Функция SQL COUNT с примерами

Функция SQL COUNT является одной из наиболее распространенных функций, используемых разработчиками SQL. Я использую его ежедневно. Узнайте больше о функции COUNT в этой статье.

Назначение функции SQL COUNT

Агрегированная функция COUNT возвращает количество ненулевых выражений, оцененных в некотором наборе результатов0003

 COUNT (выражение [ * | [DISTINCT | ALL]) [ over (analytic_clause) ] 

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

 COUNT(*)
COUNT(РАЗЛИЧНОЕ выражение)
COUNT(ВСЕ выражения)
COUNT(*) OVER (analytic_clause)
COUNT(DISTINCT выражение) OVER (analytic_clause)
COUNT(ALL expression) OVER (analytic_clause) 

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

 

Параметры

Параметры функции SQL COUNT:

  • выражение (необязательно): Это выражение используется для определения количества записей.
  • analytic_clause (необязательно): используется для указания критериев аналитического запроса.

Несколько замечаний об этой функции:

  • COUNT(*) — наиболее распространенный способ использования этой функции.
  • Поскольку COUNT является агрегатной функцией, любые непостоянные столбцы в предложении SELECT, которые не являются агрегированными, должны быть в предложении GROUP BY. Дополнительную информацию см. в разделе примеров ниже.
  • Если указать выражение, COUNT возвращает количество строк, в которых выражение не равно null. Вы можете подсчитать все строки (используя ALL) или отдельные значения выражения (используя DISTINCT).
  • Если указать символ звездочки (*), функция COUNT возвращает количество всех строк, соответствующих предикату, включая дубликаты и пустые значения, или количество строк в заданной группе строк, как указано в предложении group by.

Таким образом, COUNT может возвращать несколько разных значений (в порядке от большего к меньшему):

  • COUNT(*) — все строки, включая дубликаты и пустые значения.
  • COUNT(выражение) – все строки, кроме нуля.
  • COUNT(DISTINCT expression) – все строки, кроме дубликатов и пустых значений.

Тот факт, что COUNT(expr) исключает значения NULL, означает, что вы должны быть осторожны при выборе столбца или выражения, которые вы используете в этой функции. Различные выражения могут возвращать разные результаты.

 

Подсчет отдельных строк SQL: как подсчитать отдельные строки?

Чтобы подсчитать отдельные строки, сначала нужно выяснить, что в них различается. Это идентификатор? Имя? Что-то другое?

Затем вы используете функцию COUNT с ключевым словом DISTINCT внутри функции .

Он должен быть внутри функции, а не снаружи.

Таким образом, должно быть:

 SELECT COUNT(DISTINCT expression) 

А не:

 SELECT DISTINCT COUNT(expression) 

Пример SQL COUNT DISTINCT

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

Простой COUNT покажет 100 записей:

 SELECT COUNT(product_name) FROM product; 
COUNT(product_name)
100

Если вы используете DISTINCT, а затем COUNT, вы получите одну строку:

 SELECT DISTINCT COUNT(product_name) FROM product; 
COUNT(название_продукта)
100

Это связано с тем, что сначала выполняется COUNT, который находит значение 100. Затем DISTINCT выполняется для всех различных значений COUNT. Есть только один (значение 100), поэтому показан только он.

Чтобы получить количество различных значений в SQL, поместите DISTINCT внутрь функции COUNT.

 SELECT COUNT(DISTINCT product_name) FROM product; 
COUNT(DISTINCTproduct_name)
85

Показывает количество различных наименований продуктов. В этом примере мы видим, что их 85, и это число, которое мы ищем.

 

Нужно ли использовать GROUP BY с COUNT?

Да, вы делаете, но только если вы выбираете неагрегированные выражения из источника запроса.

Например, для этого запроса потребуется СГРУППИРОВАТЬ ПО:

 ВЫБРАТЬ пол, количество (*) ОТ студента; 

Но этот запрос не будет:

 SELECT COUNT(gender) FROM student; 

 

COUNT(1) быстрее, чем COUNT(*)?

Это распространенный вопрос, в который я действительно верил, когда начинал работать с SQL (кто-то сказал мне, что это правда).

Короткий ответ: нет, не быстрее. COUNT(1) и COUNT(*) точно такие же .

В Oracle Том Кайт (из AskTom) неоднократно подтверждал, что они одинаковы, как упоминалось в этом посте здесь.

В итоге:

  • COUNT(*) — это правильный способ записи.
  • COUNT(1) оптимизирован для использования внутри COUNT(*) (в Oracle).

Поэтому вам никогда не следует использовать COUNT(1).

 

Как отображать только те записи, которые соответствуют критериям функции COUNT?

Итак, у вас есть запрос, который возвращает значение COUNT.

Как отфильтровать набор результатов, чтобы отображались только те значения, которые соответствуют определенным критериям COUNT?

 ВЫБРАТЬ fee_paid, COUNT(*)
ОТ студента
СГРУППИРОВАТЬ ПО fee_paid; 

Результат:

FEES_PAID СЧЕТ(*)
100 1
500 1
350 1
200 1
900 1
50 1
0 1
150 2
800 1

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

Вы можете попробовать предложение WHERE.

 ВЫБРАТЬ fee_paid, COUNT(*)
ОТ студента
ГДЕ СЧИТАТЬ (*) > 1
СГРУППИРОВАТЬ ПО fee_paid; 

Имеет смысл, верно?

Если вы запустите этот запрос в Oracle:

 ORA-00934: групповая функция здесь не разрешена 

Эта ошибка ожидается. Вы получите аналогичные ошибки в SQL Server, MySQL и PostgreSQL. Это происходит из-за предложения WHERE.

Предложение WHERE фактически выполняется перед функцией COUNT. Это важно, потому что вы не можете ссылаться на функцию COUNT в предложении WHERE, поскольку предложение WHERE определяет количество.

Как добиться желаемого результата?

Вы используете предложение HAVING.

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

 ВЫБРАТЬ fee_paid, COUNT(*)
ОТ студента
СГРУППИРОВАТЬ ПО fee_paid
СЧЕТ(*) > 1; 

Результат:

FEES_PAID СЧЕТ(*)
150 2

Это показывает, что есть два студента, которые заплатили 150 за обучение.

 

Примеры функции SQL COUNT

Вот несколько примеров функции SQL COUNT. Я считаю, что примеры — лучший способ узнать о коде, даже с объяснением выше.

Давайте сначала взглянем на наш образец таблицы.

 ВЫБЕРИТЕ * ОТ учащегося; 
STUDENT_ID ИМЯ ФАМИЛИЯ ВЗНОС_ОПЛАЧЕН ПОЛ
1 Джон Смит 200 М
2 Сьюзен Джонсон 500 Ф
3 Том Крышка 350 М
4 Марка Холлоуэй 100 М
5 Стивен Уэббер 0 М
6 Джули Армстронг 150 Ф
7 Мишель Рэндалл 150 Ф
8 Андрей Купер 800 М
9 Роберт Пикеринг 900 М
10 Таня Зал 50 Ф

 

Пример 1

В этом примере используется базовая функция COUNT(*).

 ВЫБЕРИТЕ СЧЕТ(*)
ОТ студента; 

Результат:

COUNT(*)
10

Результат равен 10, поскольку в таблице 10 записей.

 

Пример 2

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

 SELECT COUNT(DISTINCT gender)
ОТ студента; 

Результат:

СЧЕТ(РАЗЛИЧНЫЙ ПОЛ)
2

Результат равен 2, так как есть 2 уникальных значения.

 

Пример 3

В этом примере COUNT и DISTINCT используются в другом порядке.

 ВЫБЕРИТЕ РАЗЛИЧНОЕ СЧЕТЧИК (пол)
ОТ студента; 

Результат:

СЧЕТ(ПОЛ)
10

Результат равен 10, потому что запрос фактически выполняет подсчет пола, а затем находит все отдельные строки. Поскольку единственная возвращенная строка имеет значение 10, она уже уникальна.

 

Пример 4

В этом примере используется столбец и функция COUNT.

 ВЫБЕРИТЕ пол, количество(*)
ОТ студента
СГРУППИРОВАТЬ ПО ПОЛУ; 

Результат:

ПОЛ СЧЕТ(*)
М 6
Ф 4

Вы можете видеть, что есть 6 учеников со значением M и 4 ученика со значением F.

 

Пример 5

В этом примере выполняется поиск количества студентов, у которых значение fee_paid больше или равно 100.

 ВЫБЕРИТЕ СЧЕТ(*)
ОТ студента
ГДЕ fee_paid >= 100; 

Результат:

СЧЕТ(*)
8

Результат равен 8, потому что у двух студентов меньше 100 в fee_paid.

 

Пример 6

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

 ВЫБЕРИТЕ пол, количество(*)
ОТ студента
ГДЕ fee_paid >= 100
СГРУППИРОВАТЬ ПО ПОЛУ; 

Результат:

ПОЛ СЧЕТ(*)
М 5
Ф 3

Вы можете видеть, что есть 3 со значением F и 5 со значением M.