Резюме :в този урок ще научите как да използвате SQLite COUNT
функция за получаване на броя на елементите в група.
Въведение в SQLite COUNT()
функция
Функцията COUNT()
е агрегатна функция, която връща броя на елементите в група.
Например, можете да използвате COUNT()
функция за получаване на броя на песните от tracks
таблица, броят на изпълнителите от artists
таблица и т.н.
Следното илюстрира основния синтаксис на COUNT
функция:
COUNT([ALL | DISTINCT] expression);
Code language: SQL (Structured Query Language) (sql)
Аргументи
COUNT
функцията се държи според аргументите, които предавате в нея и опцията ALL
или DISTINCT
които посочите.
Следното описва значенията на ALL
и DISTINCT
опции:
ALL
:когато посочите всички,COUNT()
функцията брои всички ненулеви стойности включват дубликати.COUNT()
функцията използваALL
опция по подразбиране, ако я пропуснете.DISTINCT
:ако изрично използватеDISTINCT
опциятаCOUNT
функцията отчита само уникални и ненулеви стойности.
Изразът може да бъде колона или израз, който включва колони, към които се прилага функцията COUNT()
се прилага.
SQLite предоставя друг синтаксис на COUNT()
функция:
COUNT(*)
Code language: SQL (Structured Query Language) (sql)
COUNT(*)
функцията връща броя на редовете в таблица, включително редовете, включително NULL и дубликатите.
SQLite COUNT()
функционална илюстрация
Първо създайте таблица, наречена t1
която има една колона:
CREATE TABLE t1(c INTEGER);
Code language: SQL (Structured Query Language) (sql)
Второ, поставете пет реда в t1
таблица:
INSERT INTO t1(c)
VALUES(1),(2),(3),(null),(3);
Code language: SQL (Structured Query Language) (sql)
Трето, заявете данни от t1
таблица:
SELECT * FROM t1;
Code language: SQL (Structured Query Language) (sql)
Четвърто, използвайте COUNT(*)
функция за връщане на броя на редовете в t1
таблица:
SELECT COUNT(*) FROM t1;
Code language: SQL (Structured Query Language) (sql)
Както можете да видите ясно от изхода, резултатният набор включва NULL и дублиращи се редове.
Пето, използвайте COUNT(expression)
за да получите броя на ненулевите стойности в колоната c
:
SELECT COUNT(c) FROM t1;
Code language: SQL (Structured Query Language) (sql)
В този пример COUNT(c)
връща броя на ненулевите стойности. Отчита дублиращите се редове като отделни.
Шесто, използвайте COUNT(DISTINCT expression)
за да получите броя на уникалните и ненулеви стойности в колона c
:
SELECT COUNT(DISTINCT c) FROM t1;
Code language: SQL (Structured Query Language) (sql)
SQLite COUNT(*)
примери
Ще вземем таблицата tracks
в примерната база данни, за да демонстрирате функционалността на COUNT(*)
функция.
1) SQLite COUNT(*)
пример
За да получите броя на редовете от tracks
таблица, използвате COUNT(*)
функционира, както следва:
SELECT count(*)
FROM tracks;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
count(*)
--------
3503
Code language: plaintext (plaintext)
2) SQLite COUNT(*)
с WHERE
пример за клауза
Следното изявление използва COUNT(*)
функция с WHERE
клауза за намиране на броя на песните, чийто идентификатор на албума е 10:
SELECT COUNT(*)
FROM tracks
WHERE albumid = 10;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
COUNT(*)
--------
14
3) SQLite COUNT(*)
с GROUP BY
пример за клауза
За да получите всички албуми и броя на песните във всеки албум, комбинирате COUNT(*)
функция с GROUP BY
клауза:
SELECT
albumid,
COUNT(*)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
AlbumId COUNT(*)
------- --------
1 10
2 1
3 3
4 8
5 15
6 13
7 12
8 14
9 8
10 14
...
В този пример:
- Първо,
GROUP BY
клауза групирайте песни по идентификатор на албума. - След това
COUNT(*)
функцията връща броя на песните за всеки албум или група песни.
4) SQLite COUNT(*)
с HAVING
пример за клауза
Следното използва COUNT(*)
в HAVING
клауза за намиране на албуми, които имат повече от 25 песни:
SELECT
albumid,
COUNT(*)
FROM
tracks
GROUP BY
albumid
HAVING COUNT(*) > 25
Code language: SQL (Structured Query Language) (sql)
Опитайте го
AlbumId COUNT(*)
------- --------
23 34
73 30
141 57
229 26
5) SQLite COUNT(*)
с INNER JOIN
пример за клауза
За да направите изхода от горната заявка по-полезен, можете да включите колоната с името на албума. За да направите това, добавяте INNER JOIN
и ORDER BY
клаузи към заявката като следната заявка:
SELECT
tracks.albumid,
title,
COUNT(*)
FROM
tracks
INNER JOIN albums ON
albums.albumid = tracks.albumid
GROUP BY
tracks.albumid
HAVING
COUNT(*) > 25
ORDER BY
COUNT(*) DESC;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
AlbumId Title COUNT(*)
------- -------------- --------
141 Greatest Hits 57
23 Minha Historia 34
73 Unplugged 30
229 Lost, Season 3 26
SQLite COUNT(DISTINCT expression)
примери
Нека да разгледаме employees
таблица от примерната база данни.
SELECT
employeeid,
lastname,
firstname,
title
FROM
employees;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
EmployeeId LastName FirstName Title
---------- -------- --------- -------------------
1 Adams Andrew General Manager
2 Edwards Nancy Sales Manager
3 Peacock Jane Sales Support Agent
4 Park Margaret Sales Support Agent
5 Johnson Steve Sales Support Agent
6 Mitchell Michael IT Manager
7 King Robert IT Staff
8 Callahan Laura IT Staff
За да получите броя на заглавията на позициите, предавате title
колона към COUNT()
функционира, както следва:
SELECT COUNT(title)
FROM employees;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
COUNT(title)
------------
8
Въпреки това, за да получите броя на уникалните заглавия, трябва да добавите DISTINCT
опция за COUNT()
функция, както е показано в следното изявление:
SELECT COUNT(DISTINCT title)
FROM employees;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
COUNT(DISTINCT title)
---------------------
5
В този урок ви показахме как да използвате SQLite COUNT()
функция за преброяване на броя на елементите в група.