В этом учебном пособии вы узнаете, как использовать Oracle/PLSQL функцию COUNT с синтаксисом и примерами.
Описание
Oracle/PLSQL функция COUNT возвращает количество возращенных запросом строк.
Синтаксис
Синтаксис Oracle/PLSQL функции COUNT:
FROM tables
[WHERE conditions];
ИЛИ синтаксис функции COUNT с группировке результатов по одному или нескольким столбцам:
COUNT(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n;
Параметры или аргументы
expression1, expression2, ... expression_n Выражения, которые не инкапсулированы в функции COUNT и должны быть включены в оператор GROUP BY в конце SQL предложения.
aggregate_expression - это столбец или выражение, чьи ненулевые значения будут учитываться.
tables - таблицы, из которых вы хотите получить записи. В оперторе FROM должна быть указана хотя бы одна таблица.
WHERE conditions - необязательный. Это условия, которые должны быть соблюдены для выбранных записей.
Функция COUNT возвращает numeric значение.
Включает только NOT NULL значения
Не все это понимают, но функция COUNT будет включать в счет только те записи, в которых значение выражения COUNT (expression) НЕ равно NULL. Когда выражение содержит значение NULL, оно не включается в вычисления COUNT.
Давайте рассмотрим пример функции COUNT, который демонстрирует, как значения NULL оцениваются функцией COUNT.
Например, если у вас есть следующая таблица с названием suppliers:
supplier_id | supplier_name | state |
---|---|---|
1 | IBM | CA |
2 | Microsoft | |
3 | NVIDIA |
И если вы запустите следующий оператор SELECT, который использует функцию COUNT:
1 2 3 4 |
SELECT COUNT(supplier_id) FROM suppliers; --Результат: 3 |
Этот пример COUNT вернет 3, поскольку все значения supplier_id в результирующем наборе запроса не равны NULL.
Однако, если вы запустили следующий оператор SELECT, который использует функцию COUNT:
1 2 3 4 |
SELECT COUNT(state) FROM suppliers; --Результат: 1 |
Этот пример COUNT будет возвращать только 1, так как только одно значение state в наборе результатов запроса имеет значение NOT NULL. Это будет первый ряд, где state = 'CA'. Это единственная строка, которая включена в расчет функции COUNT.
Применение
Функцию COUNT можно использовать в следующих версиях Oracle/PLSQL:
- Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i
Пример - с одним полем
Рассмотрим некоторые примеры Oracle функции COUNT чтобы понять, как использовать функцию COUNT в Oracle/PLSQL.
Например, вы можете узнать, сколько сотрудников имеют зарплату выше 57000$ в год.
1 2 3 |
SELECT COUNT(*) AS "Number of employees" FROM employees WHERE salary > 57000; |
В этом примере функции COUNT мы назвали выражение COUNT (*) as "Number of employees". В результате "Number of employees" будет отображаться в качестве имени поля при возврате набора результатов.
Пример - использование DISTINCT
Вы можете использовать оператор DISTINCT в функции COUNT. Например, приведенный ниже оператор SQL возвращает количество уникальных departments (отделов), в которых хотя бы один employee (сотрудник) зарабатывает более 48000$ в год.
1 2 3 |
SELECT COUNT(DISTINCT department) AS "Unique departments" FROM employees WHERE salary > 48000; |
Опять же, поле COUNT (DISTINCT department) называется "Unique departments". Это имя поля, которое будет отображаться в наборе результатов.
Пример - использование GROUP BY
В некоторых случаях вам потребуется использовать оператор GROUP BY с функцией COUNT.
Например, вы также можете использовать функцию COUNT, чтобы вернуть название department (отдела) и количество employees (сотрудников в соответствующем отделе), которые находятся в state (штате) 'CA'.
1 2 3 4 |
SELECT department, COUNT(*) AS "Number of employees" FROM employees WHERE state = 'CA' GROUP BY department; |
Поскольку в вашем операторе SELECT указан один столбец, который не инкапсулирован в функции COUNT, вы должны использовать оператор GROUP BY. Поэтому поле department должно быть указано в операторе GROUP BY.