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

count

Описание​

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

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

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

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

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

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

Начиная с 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 |
+-----------------------------------+-----------------------------------+