sql >> Databáze >  >> RDS >> MariaDB

Funkce COUNT() v MariaDB

V MariaDB, COUNT() agregační funkce vrací počet hodnot výrazu, které nejsou NULL, v řádcích načtených pomocí SELECT prohlášení.

Ukázková data

Předpokládejme, že máme následující tabulku:

SELECT * 
FROM Pets;

Výsledek:

+-------+-----------+---------+---------+------------+
| 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       |
+-------+-----------+---------+---------+------------+

Následující příklady budou používat COUNT() funkce při dotazu na tuto tabulku.

Příklad

Zde je návod, jak počítat řádky ve výše uvedené tabulce:

SELECT COUNT(*)
FROM Pets;

Výsledek:

8

To nám říká, že v tabulce je 8 řádků. Víme to, protože jsme použili zástupný znak hvězdička (* ) specifikovat všechny řádky a všechny sloupce.

Počítání konkrétního sloupce

Můžete také určit sloupec, který se má počítat. COUNT() funkce počítá pouze jiné než NULL výsledky, takže pokud zadáte sloupec, který obsahuje NULL hodnoty, tyto hodnoty se nebudou počítat.

Zde je příklad, který demonstruje, co tím myslím.

SELECT COUNT(DOB)
FROM Pets;

Výsledek:

6

V tomto případě Pets tabulka obsahuje dvě NULL hodnoty v DOB sloupec (dva domácí mazlíčci neuvedli své datum narození), a tak COUNT(DOB) vrátí 6 místo 8, když jsme použili COUNT(*) .

Důvod COUNT(*) v předchozím příkladu vrátil všechny řádky, protože tyto dva řádky uvedly mít data v ostatních sloupcích.

Filtrované výsledky

COUNT() Funkce počítá řádky vrácené dotazem. Pokud tedy filtrujete výsledky, výsledek COUNT() to bude odrážet.

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

Výsledek:

2

V tomto případě jsou to dva mazlíčci se jménem Fluffy. Dotaz by tedy vrátil dva řádky a výsledek COUNT() je 2 .

Počítání odlišných sloupců

Máme možnost přidat DISTINCT klíčové slovo, které určí, že budou vráceny pouze odlišné hodnoty (takže se vyloučí duplikáty):

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

Výsledek:

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

V tomto případě, i když existuje osm PetName hodnoty, pouze sedm z nich je odlišných (dva jsou duplikáty – máme dva mazlíčky zvané Fluffy).

Položka HAVING Ustanovení

Můžete zahrnout COUNT() ve více částech dotazu. Není omezeno pouze na SELECT seznam.

Zde je příklad, který používá COUNT() v obou HAVING klauzule a SELECT seznam:

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

Výsledek:

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

Viz SQL COUNT() pro začátečníky, kde najdete podrobnější vysvětlení tohoto příkladu a také příklad použití COUNT() ve funkci okna.


  1. Jak se rozhodnu, kdy použít pravá spojení/levá spojení nebo vnitřní spojení Nebo jak určit, která tabulka je na které straně?

  2. Django + Psycopg2:InterfaceError:podporován pouze protokol 3

  3. Jak přidat záhlaví a zápatí do sestavy v aplikaci Access

  4. Rails Migration mění sloupec pro použití polí Postgres