В этом учебном материале вы узнаете, как использовать SQL функцию COUNT с синтаксисом и примерами.
Описание
SQL функция COUNT используется для подсчета количества строк, возвращаемых в операторе SELECT.
Синтаксис
Синтаксис для функции COUNT в SQL.
FROM tables
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]];
Или синтаксис для функции COUNT при группировке результатов по одному или нескольким столбцам.
COUNT(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n
[ORDER BY expression [ ASC | DESC ]];
Параметры или аргумент
- expression1, expression2, ... expression_n
- Выражения, которые не инкапсулированы в функции COUNT и должны быть включены в предложение GROUP BY в конце SQL запроса
- aggregate_expression
- Это столбец или выражение, чьи ненулевые значения будут учитываться
- tables
- Таблицы, из которых вы хотите получить записи. В предложении FROM должна быть указана хотя бы одна таблица
- WHERE conditions
- Необязательный. Это условия, которые должны быть выполнены для выбора записей
- ORDER BY expression
- Необязательный. Выражение, используемое для сортировки записей в наборе результатов. Если указано более одного выражения, значения должны быть разделены запятыми
- ASC
- Необязательный. ASC сортирует результирующий набор в порядке возрастания по expressions. Это поведение по умолчанию, если модификатор не указан
- DESC
- Необязательный. DESC сортирует результирующий набор в порядке убывания по expressions
Пример - функция COUNT включает только значения NOT NUL
Не все это понимают, но функция COUNT будет подсчитывать только те записи, в которых expressions НЕ равно NULL в COUNT(expressions). Когда expressions является значением NULL, оно не включается в вычисления COUNT. Давайте рассмотрим это дальше.
В этом примере у нас есть таблица customers со следующими данными:
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
5000 | Selena | Gomez | bing.com |
6000 | Mila | Kunis | yahoo.com |
7000 | Tom | Cruise | oracle.com |
8000 | Johnny | Depp | NULL |
9000 | Russell | Crowe | google.com |
Введите следующий запрос SELECT, которая использует функцию COUNT.
1 2 |
SELECT COUNT(customer_id) FROM customers; |
Будет выбрана 1 запись. Вот результаты, которые вы должны получить.
COUNT(customer_id) |
---|
6 |
В этом примере запрос вернет 6, поскольку в таблице customer есть 6 записей, а все значения customer_id НЕ равны NULL (т.е. customer_id является первичным ключом для таблицы).
Но что происходит, когда мы сталкиваемся со значением NULL с помощью функции COUNT? Давайте введем следующий оператор SELECT, который посчитает столбец favourite_website, который может содержать значения NULL.
1 2 |
SELECT COUNT(favorite_website) FROM customers; |
Будет выбрана 1 запись. Вот результаты, которые вы должны получить.
COUNT(favorite_website) |
---|
5 |
Во втором примере будет возвращено значение 5. Поскольку одно из значений favourite_website равно NULL, оно будет исключено из вычисления функции COUNT. В результате запрос вернет 5 вместо 6.
Подсказка: Используйте первичный ключ в функции COUNT или COUNT(*), если вы хотите быть уверены, что записи не исключены в расчетах.
Пример - использование одного выражения в функции COUNT
Давайте рассмотрим пример, который показывает, как использовать функцию COUNT с одним выражением в запросе.
В этом примере у нас есть таблица employees со следующими данными:
employee_number | first_name | last_name | salary | dept_id |
---|---|---|---|---|
1001 | Justin | Bieber | 62000 | 500 |
1002 | Selena | Gomez | 57500 | 500 |
1003 | Mila | Kunis | 71000 | 501 |
1004 | Tom | Cruise | 42000 | 501 |
Введите следующий SQL оператор.
1 2 3 |
SELECT COUNT(*) AS total FROM employees WHERE salary > 50000; |
Будет выбрана 1 запись. Вот результаты, которые вы должны получить.
total |
---|
3 |
В этом примере мы вернем количество сотрудников, у которых зарплата превышает 50000 $. Мы присвоили COUNT(*) псевдоним total, чтобы сделать результаты наших запросов более читабельными. Теперь total будет отображаться как заголовок столбца при возврате набора результатов.
Пример - использование GROUP BY с функцией COUNT
В некоторых случаях вам потребуется использовать оператор GROUP BY с функцией COUNT. Это происходит, когда в операторе SELECT указаны столбцы, которые не являются частью функции COUNT. Давайте рассмотрим это дальше.
Опять же, используя таблицу employees, заполненную следующими данными.
employee_number | first_name | last_name | salary | dept_id |
---|---|---|---|---|
1001 | Justin | Bieber | 62000 | 500 |
1002 | Selena | Gomez | 57500 | 500 |
1003 | Mila | Kunis | 71000 | 501 |
1004 | Tom | Cruise | 42000 | 501 |
Введите следующий SQL оператор.
1 2 3 4 5 |
SELECT dept_id, COUNT(*) AS total FROM employees WHERE salary > 50000 GROUP BY dept_id; |
Будет выбрано 2 записи. Вот результаты, которые вы должны получить.
dept_id | total |
---|---|
500 | 2 |
501 | 1 |
В этом примере функция COUNT будет возвращать количество сотрудников, которые зарабатывают более 50000 $ для каждого dept_id. Поскольку столбец dept_id не включен в функцию COUNT, он должен быть указан в операторе GROUP BY.
Пример - использование DISTINCT с функцией COUNT
Знаете ли вы, что вы можете использовать DISTINCT в функции COUNT? Это позволяет рассчитывать только уникальные значения.
Используя ту же таблицу employees, что и в предыдущем примере.
employee_number | first_name | last_name | salary | dept_id |
---|---|---|---|---|
1001 | Justin | Bieber | 62000 | 500 |
1002 | Selena | Gomez | 57500 | 500 |
1003 | Mila | Kunis | 71000 | 501 |
1004 | Tom | Cruise | 42000 | 501 |
Введите следующий SQL оператор.
1 2 3 |
SELECT COUNT(DISTINCT dept_id) AS total FROM employees WHERE salary > 50000; |
Будет выбрана 1 запись. Вот результаты, которые вы должны получить.
total |
---|
2 |