Перейти к основному содержимому

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