Jak używać COUNT w SQL
Wprowadzenie
- LICZBA () jest funkcją agregującą w SQL.
- Ta funkcja zlicza liczbę rekordów w tabeli, jeśli warunek nie jest określony.
- Jeśli warunek jest określony, funkcja count zwraca liczbę rekordów spełniających określony warunek.
Odmiany LICZBA ( ) w SQL
- LICZBA(*)
LICZBA (*) służy do wyświetlania liczby rekordów obecnych w tabeli.
Wyniki funkcji LICZBA (*) będą zawierać NULL, a także zduplikowane wpisy.
Składnia:
SELECT COUNT (*) FROM tablename;
Przykład:
Najpierw stworzymy bazę danych o nazwie „employeedb”. Następnie w tej bazie utworzymy tabelę „pracownik” i wstawimy do niej rekordy. Rozważymy tę tabelę i bazę danych we wszystkich kolejnych przykładach.
Liczbę rekordów obecnych w tabeli „pracownik” znajdziemy za pomocą funkcji 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;
Wyjście:
+----------+ | COUNT(*) | +----------+ | 7 | +----------+ 1 row in set (0.00 sec)
W tabeli pracowników znajduje się 7 rekordów.
- LICZBA (1)
LICZBA (1) służy również do wyświetlania liczby rekordów obecnych w tabeli. Wyniki funkcji LICZBA (1) będą zawierały NULL, a także zduplikowane wpisy. Funkcja ILE.LICZB (1) działa tak samo jak ILE.LICZB (*). Nawet wyniki COUNT (1) i COUNT (*) są również takie same.
Składnia:
SELECT COUNT (1) FROM tablename;
Przykład 1: Wyświetlimy liczbę rekordów obecnych w tabeli pracowników za pomocą LICZBA (1).
mysql> SELECT COUNT(1) FROM employee;
Wyjście:
+----------+ | COUNT(1) | +----------+ | 7 | +----------+ 1 row in set (0.00 sec)
W tabeli znajduje się 7 rekordów.
Przykład 2:
Zobaczmy, co się stanie, gdy przekażemy 14 jako parametr do funkcji COUNT().
mysql> SELECT COUNT(14) FROM employee;
Wyjście:
+-----------+ | COUNT(14) | +-----------+ | 7 | +-----------+ 1 row in set (0.00 sec)
W tabeli znajduje się 7 rekordów. Tak więc 7 jest wyświetlane jako wynik, mimo że przekazaliśmy 14 jako parametr do funkcji COUNT(). Przekazanie liczby całkowitej do funkcji COUNT() nie oznacza zliczenia tej liczby wierszy w tabeli. Oznacza to po prostu, że 14 zostanie przypisanych do każdego wiersza znajdującego się w tabeli, a następnie wiersze zostaną zsumowane w celu uzyskania sumy i wyświetlone jako wynik.
Przykład 3:
Zobaczmy, co się stanie, gdy przekażemy -14 jako parametr do funkcji COUNT().
mysql> SELECT COUNT(-14) FROM employee;
Wyjście:
+------------+ | COUNT(-14) | +------------+ | 7 | +------------+ 1 row in set (0.07 sec)
W tabeli znajduje się 7 rekordów. Tak więc 7 jest wyświetlane jako wynik, mimo że przekazaliśmy -14 jako parametr do funkcji COUNT(). Oznacza to po prostu, że -14 zostanie przypisane do każdego wiersza znajdującego się w tabeli, a następnie wiersze zostaną zsumowane w celu uzyskania sumy i wyświetlone jako wynik.
- LICZBA(NazwaKolumny)
COUNT(NazwaKolumny) służy do znalezienia liczby rekordów zawierających wartości dla określonej kolumny. Podczas używania funkcji COUNT() z nazwą kolumny jako parametrem, rekordy zawierające wartości NULL dla tego rekordu będą ignorowane.
Składnia:
SELECT COUNT(ColumnName) FROM tablename;
Przykład 1:
Wyświetlimy liczbę rekordów, które istnieją dla Emp_ID.
mysql> SELECT COUNT(Emp_ID) FROM employee;
Wyjście:
+---------------+ | COUNT(Emp_ID) | +---------------+ | 7 | +---------------+ 1 row in set (0.00 sec)
Istnieje 7 rekordów, które zawierają unikalny Emp_ID. Dlatego 7 jest wyświetlane jako wynik.
Przykład 2:
Wyświetlimy liczbę rekordów, które istnieją dla Emp_Name.
mysql> SELECT COUNT(Emp_Name) FROM employee;
Wyjście:
+-----------------+ | COUNT(Emp_Name) | +-----------------+ | 6 | +-----------------+ 1 row in set (0.00 sec)
W tabeli pracowników znajduje się 7 rekordów, z których jeden zawiera wartości NULL dla Emp_Name. Tak więc ten konkretny rekord jest ignorowany, a 6 jest wyświetlane jako wynik.
Przykład 3:
Wyświetlimy liczbę rekordów, które istnieją dla Emp_Salary.
mysql> SELECT COUNT(Emp_Salary) FROM employee;
Wyjście:
+-------------------+ | COUNT(Emp_Salary) | +-------------------+ | 6 | +-------------------+ 1 row in set (0.00 sec)
W tabeli pracowników znajduje się 7 rekordów, z których jeden zawiera wartości NULL dla Emp_Salary. Tak więc ten konkretny rekord jest ignorowany, a 6 jest wyświetlane jako wynik.
- LICZBA(DISTINCT NazwaKolumny)
Funkcja COUNT() z parametrem DISTINCT ColumnName służy do wyświetlania liczby rekordów zawierających unikalne wartości dla określonej kolumny. Rekordy zawierające zduplikowane i NULL wartości nie będą liczone.
Składnia:
SELECT COUNT(DISTINCT ColumnName) FROM tablename;
Przykład 1:
Wyświetlimy liczbę rekordów zawierających unikalne wartości dla Emp_ID.
mysql> SELECT COUNT( DISTINCT Emp_ID) FROM employee;
Wyjście:
+-------------------------+ | COUNT( DISTINCT Emp_ID) | +-------------------------+ | 7 | +-------------------------+ 1 row in set (0.05 sec)
Istnieje 7 rekordów, które zawierają unikalne wartości dla Emp_ID.
Przykład 2:
Wyświetlimy liczbę rekordów zawierających unikalne wartości dla Emp_Name.
mysql> SELECT COUNT( DISTINCT Emp_Name) FROM employee;
Wyjście:
+---------------------------+ | COUNT( DISTINCT Emp_Name) | +---------------------------+ | 5 | +---------------------------+ 1 row in set (0.00 sec)
Istnieje 5 rekordów, które zawierają unikalne wartości dla Emp_Name. NULL i zduplikowane wartości w Emp_Name nie będą uwzględniane przez słowo kluczowe DISTINCT.
Przykład 3:
Wyświetlimy liczbę rekordów, które zawierają unikalne wartości dla Emp_Salary.
mysql> SELECT COUNT( DISTINCT Emp_Salary) FROM employee;
Wyjście:
+-----------------------------+ | COUNT( DISTINCT Emp_Salary) | +-----------------------------+ | 5 | +-----------------------------+ 1 row in set (0.00 sec)
Istnieje 5 rekordów, które zawierają unikalne wartości dla Emp_Salary. NULL i zduplikowane wartości w Emp_Salary nie będą uwzględniane przez słowo kluczowe DISTINCT.