Как да използвате COUNT в SQL
Въведение
- БРОЙ( ) е агрегатна функция в SQL.
- Тази функция отчита броя на записите в таблица, ако условието не е посочено.
- Ако условието е посочено, функцията за броене връща броя на записите, отговарящи на посоченото условие.
Варианти на COUNT ( ) в SQL
- БРОЙ(*)
БРОЙ (*) се използва за показване на броя записи, присъстващи в таблица.
Резултатите от функцията COUNT (*) ще съдържат NULL, както и дублиращи се записи.
Синтаксис:
SELECT COUNT (*) FROM tablename;
Пример:
Първо ще създадем база данни с име “employeedb”. След това в тази база данни ще създадем таблица „служител“ и ще вмъкнем записи в таблицата. Ще разгледаме тази таблица и база данни за всички следващи примери.
Ще намерим броя на записите, присъстващи в таблицата „служител“, като използваме функцията COUNT ().
mysql> USE employeedb; Database changed mysql> SELECT *FROM employee; +--------+----------+------------+ | Emp_ID | Emp_Name | Emp_Salary | +--------+----------+------------+ | 1 | Nikita | 30000 | | 2 | Riddhi | 25000 | | 3 | Nayan | 45000 | | 4 | Shruti | 15000 | | 5 | Anurati | 55000 | | 6 | NULL | NULL | | 7 | Anurati | 55000 | +--------+----------+------------+ 7 rows in set (0.00 sec)

mysql> SELECT COUNT(*) FROM employee;
Изход:
+----------+ | COUNT(*) | +----------+ | 7 | +----------+ 1 row in set (0.00 sec)

В таблицата на служителите има 7 записа.
- БРОЙ (1)
COUNT (1) също се използва за показване на броя на записите, присъстващи в таблица. Резултатите от функцията COUNT (1) ще съдържат NULL, както и дублиращи се записи. Функцията COUNT (1) работи по същия начин като COUNT (*). Дори резултатите от COUNT (1) и COUNT (*) също са еднакви.
Синтаксис:
SELECT COUNT (1) FROM tablename;
Пример 1: Ще покажем броя на записите, присъстващи в таблицата на служителите, използвайки COUNT (1).
mysql> SELECT COUNT(1) FROM employee;
Изход:
+----------+ | COUNT(1) | +----------+ | 7 | +----------+ 1 row in set (0.00 sec)

В таблицата има 7 записа.
Пример 2:
Нека видим какво се случва, когато предадем 14 като параметър на функцията COUNT().
mysql> SELECT COUNT(14) FROM employee;
Изход:
+-----------+ | COUNT(14) | +-----------+ | 7 | +-----------+ 1 row in set (0.00 sec)

В таблицата има 7 записа. И така, 7 се показва като изход, въпреки че сме предали 14 като параметър на функцията COUNT(). Предаването на цяло число към функция COUNT() не означава преброяване на този брой редове в таблицата. Това просто означава, че 14 ще бъдат присвоени на всеки ред, присъстващ в таблица, и след това тези редове ще бъдат сумирани, за да дадат обща сума и ще бъдат показани като изход.
Пример 3:
Нека видим какво се случва, когато предадем -14 като параметър на функцията COUNT().
mysql> SELECT COUNT(-14) FROM employee;
Изход:
+------------+ | COUNT(-14) | +------------+ | 7 | +------------+ 1 row in set (0.07 sec)

В таблицата има 7 записа. И така, 7 се показва като изход, въпреки че сме предали -14 като параметър на функцията COUNT(). Това просто означава -14 ще бъдат присвоени на всеки ред, присъстващ в таблицата и след това тези редове ще бъдат сумирани, за да дадат обща сума и ще бъдат показани като изход.
- COUNT(Име на колона)
COUNT(ColumnName) се използва за намиране на броя записи, които съдържат стойности за посочената колона. Докато използвате функцията COUNT() с име на колона като параметър, записите, които съдържат NULL стойности за този запис, ще бъдат игнорирани.
Синтаксис:
SELECT COUNT(ColumnName) FROM tablename;
Пример 1:
Ще покажем броя записи, които съществуват за Emp_ID.
mysql> SELECT COUNT(Emp_ID) FROM employee;
Изход:
+---------------+ | COUNT(Emp_ID) | +---------------+ | 7 | +---------------+ 1 row in set (0.00 sec)

Има 7 записа, които съдържат уникален Emp_ID. Следователно 7 се показва като изход.
Пример 2:
Ще покажем броя записи, които съществуват за Emp_Name.
mysql> SELECT COUNT(Emp_Name) FROM employee;
Изход:
+-----------------+ | COUNT(Emp_Name) | +-----------------+ | 6 | +-----------------+ 1 row in set (0.00 sec)

В таблицата на служителите има 7 записа, сред които един запис съдържа NULL стойности за Emp_Name. Така че този конкретен запис се игнорира и 6 се показва като изход.
Пример 3:
Ще покажем броя записи, които съществуват за Emp_Salary.
mysql> SELECT COUNT(Emp_Salary) FROM employee;
Изход:
+-------------------+ | COUNT(Emp_Salary) | +-------------------+ | 6 | +-------------------+ 1 row in set (0.00 sec)

В таблицата на служителите има 7 записа, сред които един запис съдържа NULL стойности за Emp_Salary. Така че този конкретен запис се игнорира и 6 се показва като изход.
- БРОЙ(DISTINCT ColumnnName)
Функцията COUNT() с DISTINCT ColumnName като параметър се използва за показване на броя записи, които съдържат уникални стойности за конкретна колона. Записите, които съдържат дублиращи се и NULL стойности, няма да бъдат отчетени.
Синтаксис:
SELECT COUNT(DISTINCT ColumnName) FROM tablename;
Пример 1:
Ще покажем броя на записите, които съдържат уникални стойности за Emp_ID.
mysql> SELECT COUNT( DISTINCT Emp_ID) FROM employee;
Изход:
+-------------------------+ | COUNT( DISTINCT Emp_ID) | +-------------------------+ | 7 | +-------------------------+ 1 row in set (0.05 sec)

Има 7 записа, които съдържат уникални стойности за Emp_ID.
Пример 2:
Ще покажем броя на записите, които съдържат уникални стойности за Emp_Name.
mysql> SELECT COUNT( DISTINCT Emp_Name) FROM employee;
Изход:
+---------------------------+ | COUNT( DISTINCT Emp_Name) | +---------------------------+ | 5 | +---------------------------+ 1 row in set (0.00 sec)

Има 5 записа, които съдържат уникални стойности за Emp_Name. NULL и дублиращи се стойности в Emp_Name няма да се разглеждат от ключовата дума DISTINCT.
Пример 3:
Ще покажем броя на записите, които съдържат уникални стойности за Emp_Salary.
mysql> SELECT COUNT( DISTINCT Emp_Salary) FROM employee;
Изход:
+-----------------------------+ | COUNT( DISTINCT Emp_Salary) | +-----------------------------+ | 5 | +-----------------------------+ 1 row in set (0.00 sec)

Има 5 записа, които съдържат уникални стойности за Emp_Salary. NULL и дублиращи се стойности в Emp_Salary няма да се разглеждат от ключовата дума DISTINCT.