MariaDB
 sql >> база данни >  >> RDS >> MariaDB

COUNT() Функция в MariaDB

В MariaDB, COUNT() агрегатната функция връща броя на стойностите, различни от NULL на израза в редовете, извлечени от SELECT изявление.

Примерни данни

Да предположим, че имаме следната таблица:

SELECT * 
FROM Pets;

Резултат:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
|     3 |         2 |       2 | Scratch | 2018-10-01 |
|     4 |         3 |       3 | Wag     | 2020-03-15 |
|     5 |         1 |       1 | Tweet   | 2020-11-28 |
|     6 |         3 |       4 | Fluffy  | 2020-09-17 |
|     7 |         3 |       2 | Bark    | NULL       |
|     8 |         2 |       4 | Meow    | NULL       |
+-------+-----------+---------+---------+------------+

Следващите примери ще използват COUNT() функция при запитване към тази таблица.

Пример

Ето как да преброите редовете в горната таблица:

SELECT COUNT(*)
FROM Pets;

Резултат:

8

Това ни казва, че в таблицата има 8 реда. Знаем това, защото използвахме заместващия знак за звездичка (* ), за да посочите всички редове и всички колони.

Пребройте конкретна колона

Можете също да посочите колона за броене. COUNT() функцията отчита само не-NULL резултати, така че ако посочите колона, която съдържа NULL стойности, тези стойности няма да бъдат отчетени.

Ето пример, за да демонстрирам какво имам предвид.

SELECT COUNT(DOB)
FROM Pets;

Резултат:

6

В този случай Pets таблицата съдържа две NULL стойности в DOB колона (два домашни любимци не са посочили датата си на раждане) и така COUNT(DOB) връща 6 вместо 8, когато използвахме COUNT(*) .

Причината COUNT(*) в предишния пример върна всички редове, защото тези два реда направиха има данни в другите колони.

Филтрирани резултати

COUNT() функцията преброява редовете, върнати от заявката. Така че, ако филтрирате резултатите, резултатът от COUNT() ще отрази това.

SELECT COUNT(*)
FROM Pets
WHERE PetName = 'Fluffy';

Резултат:

2

В този случай има два домашни любимци с име Fluffy. Следователно, два реда биха били върнати от заявката и резултатът от COUNT() е 2 .

Преброяване на отделни колони

Имаме опцията да добавим DISTINCT ключова дума, за да посочите, че се връщат само различни стойности (така че изключва дубликати):

SELECT 
    COUNT(PetName) AS "All",
    COUNT(DISTINCT PetName) AS "Distinct"
FROM Pets;

Резултат:

+-----+----------+
| All | Distinct |
+-----+----------+
|   8 |        7 |
+-----+----------+

В този случай, въпреки че има осем PetName стойности, само седем от тях са различни (два са дубликати – имаме два домашни любимци, наречени Fluffy).

HAVING Клауза

Можете да включите COUNT() в множество части на заявка. Не се ограничава само до SELECT списък.

Ето пример, който използва COUNT() както в HAVING клауза и SELECT списък:

SELECT 
    PetTypeId, 
    COUNT(PetTypeId) AS Count
FROM Pets
GROUP BY PetTypeId
HAVING COUNT(PetTypeId) > 2
ORDER BY Count DESC;

Резултат:

+-------------+---------+
| PetTypeId   | Count   |
|-------------+---------|
| 3           | 4       |
| 2           | 3       |
+-------------+---------+

Вижте SQL COUNT() за начинаещи за по-подробно обяснение на този пример, както и пример за използване на COUNT() във функция на прозорец.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да шифровате вашите MySQL и MariaDB архиви

  2. Автоматизация на бази данни с Puppet:Разгръщане на MySQL &MariaDB Galera Cluster

  3. Представяне на мониторинг на база данни, базиран на агенти с ClusterControl 1.7

  4. MariaDB ще представи TO_CHAR()

  5. Връщане на произволни редове от таблица в MariaDB