Агрегатністандарт SQL

COUNT

Рахує рядки або значення, які не NULL.

Синтаксис

COUNT(*)
COUNT(<стовпець>)
COUNT(DISTINCT <стовпець>)

COUNT(*) рахує всі рядки. COUNT(<стовпець>) — лише ті, де в стовпці не NULL. COUNT(DISTINCT <стовпець>) — скільки різних значень. Разом із GROUP BY рахує окремо для кожної групи.

Дані для прикладів

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Скільки всього працівників
SELECT COUNT(*) AS total
FROM employees;
total
5
Три різні підрахунки
SELECT COUNT(*) AS all_rows,
COUNT(bonus) AS with_bonus,
COUNT(DISTINCT department) AS departments
FROM employees;
all_rowswith_bonusdepartments
533

У двох працівників бонусу нема, тому COUNT(bonus) дає 3, а не 5.

Скільки людей у кожному відділі
SELECT department, COUNT(*) AS people
FROM employees
GROUP BY department
ORDER BY department;
departmentpeople
backend2
design1
frontend2

Зверни увагу

COUNT(<стовпець>) мовчки пропускає NULL. Хочеш кількість рядків — пиши COUNT(*).

Якщо рядків нема, COUNT дає 0, а SUM — NULL. Тож COUNT у COALESCE обгортати не треба.

Із LEFT JOIN COUNT(*) порахує 1 навіть там, де пари не знайшлося. Щоб отримати 0, рахуй стовпець із правої таблиці: COUNT(o.id).

Схожі функції