В этом руководстве вы узнаете, как использовать функцию SQL Server COUNT() для получения количества элементов в наборе.
- Введение в функцию SQL Server COUNT()
- Примеры функции SQL Server COUNT()
- Базовый пример SQL Server COUNT(*)
- Пример SQL Server COUNT(выражение DISTINCT)
- Пример SQL Server COUNT(выражение)
- Практические примеры функции COUNT()
- Использование функции SQL Server COUNT() с предложением GROUP BY
- Пример использования SQL Server COUNT() с предложением HAVING
- Краткое содержание
Введение в функцию SQL Server COUNT()
SQL Server COUNT() — это агрегатная функция, которая возвращает количество элементов в наборе.
Ниже показан синтаксис функции COUNT():
COUNT([ALL | DISTINCT ] expression)
В этом синтаксисе:
- ALL указывает функции COUNT() применяться ко всем значениям. ALL — значение по умолчанию.
- DISTINCT указывает функции COUNT() возвращать количество уникальных ненулевых значений.
- выражение — это выражение любого типа, кроме изображения, текста или ntext. Обратите внимание, что в выражении нельзя использовать подзапрос или агрегатную функцию.
Функция COUNT() имеет еще одну форму:
COUNT(*)
В этой форме COUNT(*) возвращает количество строк, удовлетворяющих определенному условию. COUNT(*) не поддерживает DISTINCT и не принимает параметров. Он подсчитывает каждую строку отдельно и включает строки, содержащие значения NULL.
В итоге:
- COUNT(*) подсчитывает количество элементов в наборе. Включает NULL и повторяющиеся значения.
- COUNT(ALL expression) оценивает выражение для каждой строки в наборе и возвращает количество ненулевых значений.
- COUNT(DISTINCT выражение) оценивает выражение для каждой строки в наборе и возвращает количество уникальных, ненулевых значений.
Примеры функции SQL Server COUNT()
Следующий оператор создает новую таблицу с именем t, вставляет в нее некоторые данные и запрашивает данные по ней:
CREATE TABLE t( val INT ); INSERT INTO t(val) VALUES(1),(2),(2),(3),(null),(null),(4),(5); SELECT val FROM t;
Выход:
val ----------- 1 2 2 3 NULL NULL 4 5
Базовый пример SQL Server COUNT(*)
В следующем примере функция COUNT(*) используется для возврата количества строк в таблице t:
SELECT COUNT(*) val_count FROM t;
Выход:
val_count --------- 8
Пример SQL Server COUNT(выражение DISTINCT)
В следующем примере выражение COUNT(DISTINCT) используется для возврата количества уникальных ненулевых значений в таблице t:
SELECT COUNT(DISTINCT val) val_count FROM t;
Ниже показан результат:
val_count ----------- 5 Warning: Null value is eliminated by an aggregate or other SET operation. (1 row affected)
Пример SQL Server COUNT(выражение)
В следующем примере используется COUNT(выражение) для возврата количества ненулевых значений в таблице t:
SELECT COUNT(val) FROM t;
Ниже показан результат:
val_count ----------- 6 Warning: Null value is eliminated by an aggregate or other SET operation. (1 row affected)
Практические примеры функции COUNT()
Для демонстрации мы будем использовать таблицы из примера базы данных.
Следующий оператор использует функцию COUNT(*) для возврата количества строк в таблице продуктов:
SELECT COUNT(*) product_count FROM production.products;
Выход:
product_count ------------- 321 (1 row affected)
В следующем примере функция COUNT(*) используется для получения количества продуктов, модельный год которых — 2016, а цена по прейскуранту превышает 999,99:
SELECT COUNT(*) FROM production.products WHERE model_year = 2016 AND list_price > 999.99;
Выход:
Result ----------- 7 (1 row affected)
Использование функции SQL Server COUNT() с предложением GROUP BY
В следующем операторе используется функция COUNT(*) для поиска количества продуктов в каждой категории продуктов:
SELECT category_name, COUNT(*) product_count FROM production.products p INNER JOIN production.categories c ON c.category_id = p.category_id GROUP BY category_name ORDER BY product_count DESC;
Ниже показан результат:
category_name product_count -------------------- ------------- Cruisers Bicycles 78 Mountain Bikes 60 Road Bikes 60 Children Bicycles 59 Comfort Bicycles 30 Electric Bikes 24 Cyclocross Bicycles 10 (7 rows affected)
В этом примере сначала предложение GROUP BY разделило продукты на группы, используя названия категорий, а затем к каждой группе была применена функция COUNT().
Пример использования SQL Server COUNT() с предложением HAVING
Следующий оператор возвращает бренд и количество продуктов для каждого. Кроме того, он возвращает только бренды, у которых количество продуктов больше 20:
SELECT brand_name, COUNT(*) product_count FROM production.products p INNER JOIN production.brands c ON c.brand_id = p.brand_id GROUP BY brand_name HAVING COUNT(*) > 20 ORDER BY product_count DESC;
Вывод следующий:
brand_name product_count -------------------- ------------- Trek 135 Electra 118 Surly 25 Sun Bicycles 23 (4 rows affected)
Краткое содержание
- Используйте COUNT(*) для получения количества строк в таблице.
- Используйте выражение COUNT(ALL) для подсчета количества ненулевых значений.
- Используйте выражение COUNT(DISTINCT) для получения количества уникальных ненулевых значений.