Перейти к основному содержимому
Версия: 2.0.x

count

Возвращает общее количество строк, указанных выражением.

Эта функция имеет три варианта:

  • COUNT(*) подсчитывает все строки в таблице, независимо от того, содержат ли они значения NULL.

  • COUNT(expr) подсчитывает количество строк с ненулевыми значениями в определённом столбце.

  • COUNT(DISTINCT expr) подсчитывает количество различных ненулевых значений в столбце.

COUNT(DISTINCT expr) используется для точного подсчёта уникальных значений. Если вам требуется более высокая производительность подсчёта уникальных значений, см. Использование bitmap для точного подсчёта уникальных значений.

Начиная с Selena 2.4, вы можете использовать несколько COUNT(DISTINCT) в одном операторе.

Синтаксис

COUNT(expr)
COUNT(DISTINCT expr [,expr,...])`

Параметры

expr: столбец или выражение, на основе которого выполняется count(). Если expr — имя столбца, столбец может быть любого типа данных.

Возвращаемое значение

Возвращает числовое значение. Если строки не найдены, возвращается 0. Эта функция игнорирует значения NULL.

Примеры

Предположим, есть таблица с именем test. Запросите страну, категорию и поставщика каждого заказа по id.

select * from test order by id;
+------+----------+----------+------------+
| id | country | category | supplier |
+------+----------+----------+------------+
| 1001 | US | A | supplier_1 |
| 1002 | Thailand | A | supplier_2 |
| 1003 | Turkey | B | supplier_3 |
| 1004 | US | A | supplier_2 |
| 1005 | China | C | supplier_4 |
| 1006 | Japan | D | supplier_3 |
| 1007 | Japan | NULL | supplier_5 |
+------+----------+----------+------------+

Пример 1: Подсчитать количество строк в таблице test.

    select count(*) from test;
+----------+
| count(*) |
+----------+
| 7 |
+----------+

Пример 2: Подсчитать количество значений в столбце id.

    select count(id) from test;
+-----------+
| count(id) |
+-----------+
| 7 |
+-----------+

Пример 3: Подсчитать количество значений в столбце category, игнорируя значения NULL.

select count(category) from test;
+-----------------+
| count(category) |
+-----------------+
| 6 |
+-----------------+

Пример 4: Подсчитать количество различных значений в столбце category.

select count(distinct category) from test;
+-------------------------+
| count(DISTINCT category) |
+-------------------------+
| 4 |
+-------------------------+

Пример 5: Подсчитать количество комбинаций, которые можно составить из category и supplier.

select count(distinct category, supplier) from test;
+------------------------------------+
| count(DISTINCT category, supplier) |
+------------------------------------+
| 5 |
+------------------------------------+

В выводе комбинация с id 1004 дублирует комбинацию с id 1002. Они учитываются только один раз. Комбинация с id 1007 имеет значение NULL и не учитывается.

Пример 6: Использование нескольких COUNT(DISTINCT) в одном операторе.

select count(distinct country, category), count(distinct country,supplier) from test;
+-----------------------------------+-----------------------------------+
| count(DISTINCT country, category) | count(DISTINCT country, supplier) |
+-----------------------------------+-----------------------------------+
| 6 | 7 |
+-----------------------------------+-----------------------------------+