sql >> Databáze >  >> RDS >> Mysql

MySQL COUNT() – Získá počet řádků, které má dotaz vrátit

MySQL obsahuje COUNT() funkce, která vám umožní zjistit, kolik řádků by bylo vráceno z dotazu. Tato funkce je součástí standardu SQL a lze ji použít s většinou systémů pro správu relačních databází.

COUNT() funkci lze v případě potřeby také použít k ovlivnění výsledků dotazu, například pouze vrácením těch výsledků, které mají počet řádků větší než dané množství.

Tento článek obsahuje příklady COUNT() použití v MySQL.

Data

Nejprve zde jsou data, která použijeme pro příklady na této stránce:

SELECT *FROM Tasks;

Výsledek:

+--------+------------------+----------------- +| TaskId | Název úkolu | Popis úkolu |+--------+-------------------+-----------------+ | 1 | Do zahrady | NULL || 2 | Krmte kočky | NULL || 3 | Nátěr střechy | NULL || 4 | Vezměte psa na procházku | NULL || 5 | Relax | NULL || 6 | Krmte kočky | NULL |+--------+-------------------+-----------------+ 

Spočítat všechny řádky v tabulce

Můžete použít COUNT() vrátíte celkový počet řádků v tabulce:

SELECT COUNT(*)FROM Tasks;

Výsledek:

+-----------+| POČET(*) |+----------+| 6 |+----------+ 

Tím se vrátí počet řádků v tabulce, protože jsme neposkytli žádná kritéria pro zúžení výsledků.

Zúžit výsledky

Když přidáme WHERE klauzule, která zužuje výslednou množinu, dostaneme menší číslo:

SELECT COUNT(*)FROM TasksWHERE TaskName LIKE '%cat%';

Výsledek:

+-----------+| POČET(*) |+----------+| 2 |+----------+

Jeden sloupec versus hvězdička (*)

Všechny předchozí příklady používají hvězdičku k použití počtu na všechny sloupce. Stejně jako u každého dotazu je hvězdička volitelná a používá se jako zástupný znak pro vrácení všech sloupců. Takže při použití COUNT() funkce, máte také možnost zadat konkrétní sloupce (na rozdíl od všech sloupců) jako argument.

Příklad:

SELECT COUNT(TaskName)FROM Tasks;

Výsledek:

+------------------+| POČET(Název úkolu) |+-----------------+| 6 |+-----------------+

I když tento příklad vrací stejný výsledek, jaký jsme dostali, když jsme použili hvězdičku, nemusí tomu tak být vždy. Zde je například uvedeno, co se stane, pokud zadáme jiný sloupec:

SELECT COUNT(TaskDescription)FROM Tasks;

Výsledek:

+------------------------+| POČET(Popis úlohy) |+------------------------+| 0 |+------------------------+

V tomto případě dostaneme nulu, protože tento konkrétní sloupec obsahuje hodnoty null v každém řádku.

Příklad – Odlišné

Můžete přidat DISTINCT argument k vrácení pouze počtu řádků s různou hodnotou, která není NULL hodnoty.

Možná jste si všimli, že TaskName sloupec má duplicitní hodnotu ("Krmíme kočky" se objeví dvakrát). To může způsobit problémy, pokud nechcete, aby se duplikáty započítávaly.

Takto to vypadá, když použijeme DISTINCT argument k TaskName sloupec:

SELECT COUNT(DISTINCT TaskName)FROM Tasks;

Výsledek:

+--------------------------+| POČET(ODLIŠNÝ název úkolu) |+--------------------------+| 5 |+--------------------------+

Přestože tabulka obsahuje šest řádků, dva z nich jsou duplikáty. Proto se tyto dva počítají jako jedna, dostaneme výsledek pět.

Příklad – Klauzule HAVING

Můžete také použít COUNT() pomocí HAVING klauzule k omezení sady výsledků na základě počtu řádků, které by byly vráceny.

Zde je příklad používající jinou datovou sadu než předchozí příklady:

USE Music;SELECT ar.ArtistName, COUNT(al.AlbumName) 'AlbumName'FROM Interpreti arINNER JOIN Alba al ON ar.ArtistId =al.ArtistIdGROUP BY ar.ArtistNameHAVING COUNT(al.AlbumName)> 1; před> 

Výsledek:

+------------------------+-------------+| Jméno umělce | Počet alb |+------------------------+-------------+| Iron Maiden | 5 || Devin Townsend | 3 || Michael se učí rockovat | 3 || Tom Jones | 3 || Allan Holdsworth | 2 |+------------------------+-------------+

Tento dotaz vrátí pouze ty interprety, kteří vydali více než 1 album. Zde je to, co se stane, když zvýšíme hodnotu v HAVING klauzule:

USE Music;SELECT ar.ArtistName, COUNT(al.AlbumName) 'AlbumName'FROM Interpreti arINNER JOIN Alba al ON ar.ArtistId =al.ArtistIdGROUP BY ar.ArtistNameHAVING COUNT(al.AlbumName)> 4; 

Výsledek:

+-------------+-------------+| Jméno umělce | Počet alb |+-------------+-------------+| Iron Maiden | 5 |+-------------+-------------+

  1. LIKE dotaz na prvky plochého pole jsonb

  2. Odemknutí výhod programu certifikovaných partnerů MariaDB

  3. Jak zkopírovat ze souboru CSV do tabulky PostgreSQL s hlavičkami v souboru CSV?

  4. Fáze optimalizace a promarněné příležitosti