В этом учебном пособии вы узнаете, как использовать SQLite функцию count с синтаксисом и примерами.
Описание
SQLite функция count возвращает количество выражений.
Синтаксис
Синтаксис функции count в SQLite:
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 может использоваться в следующих версиях SQLite:
- SQLite 3.8.6, SQLite 3.8.x, SQLite 3.7.x, SQLite 3.6.x
Включает только значения NOT NULL
Не все это понимают, но функция count будет считать только те записи, в которых значение выражения в count (expression) НЕ равно NULL. Когда expression содержит значение NULL, оно не включается в вычисления количества.
Давайте рассмотрим пример функции count, который демонстрирует, как значения NULL считаются функцией count.
Например, если у вас есть следующая таблица с названием suppliers:
employee_id | last_name | first_name | department_id |
---|---|---|---|
1 | Smith | Samanta | 30 |
2 | Anderson | Gans | 999 |
3 | Johnson | Tom | null |
И если вы запустили следующий оператор SELECT, который использует функцию count:
1 2 3 4 |
SELECT count(employee_id) FROM employees; Результат: 3 |
Этот пример count вернет 3, так как все значения employee_id в наборе результатов запроса NOT NULL.
Однако, если вы запустили следующий оператор SELECT, который использует функцию count:
1 2 3 4 |
SELECT count(department_id) FROM employees; Результат: 2 |
В этом примере count будет возвращено только 2, поскольку только два значения department_id в наборе результатов запроса NOT NULL. Это будет первая запись, где department_id - 30, а вторая запись, где department_id - 999. Третья запись в таблице не будет включена в вычисление функции count, потому что значение department_id равно NULL.
Пример - с одним выражением
Например, вы можете узнать, сколько сотрудников имеют зарплату выше 40000 $ в год.
1 2 3 |
SELECT count(*) AS "Number of employees" FROM employees WHERE salary > 40000; |
В этом примере функции count мы назвали выражение count(*) как "Number of employees".
Пример - использование DISTINCT
Вы можете использовать оператор DISTINCT в функции count. В примере, приведенном ниже, оператор SQL возвращает количество уникальных отделов, в которых хотя бы один сотрудник зарабатывает более 35000 $ в год.
1 2 3 |
SELECT count(DISTINCT department) AS "Unique departments" FROM employees WHERE salary > 35000; |
Опять же, полю count(DISTINCT department) указан псевдоним "Unique departments".
Пример - использование GROUP BY
В некоторых случаях вам потребуется использовать оператор GROUP BY с функцией count.
Например, вы также можете использовать функцию count, чтобы вернуть название отдела и количество сотрудников (в соответствующем отделе), у которых Google.com является любимым сайтом.
1 2 3 4 |
SELECT department, count(*) AS "Number of employees" FROM employees WHERE favorite_website = 'Google.com' GROUP BY department; |
Поскольку в вашем операторе SELECT указан один столбец, который не инкапсулирован в функцию count, вы должны использовать оператор GROUP BY. Поэтому поле department (отдела) должно быть указано в операторе GROUP BY.