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 |
+-----------------------------------+-----------------------------------+