mysql count count distinct with examples
Naučte se o použití různých forem funkce MySQL COUNT na příkladech:
COUNT je jednoduchá agregační funkce, přesto velmi efektivní a široce používaná. Zjednodušeně řečeno, používá se k POČÍTÁNÍ počtu řádků podle daného dotazu SELECT a kritérií.
Tento tutoriál vysvětlí syntaxi a použití jednoduchých COUNT, COUNT s podmínkami, COUNT s DISTINCT, COUNT s GROUP BY atd.
Co se naučíte:
Různé typy počtu MySQL
Typ | Popis | Syntax |
---|---|---|
POČET(*) | Funkce COUNT (*) vrací číslo. řádků načtených příkazem SELECT, včetně řádků obsahujících hodnoty NULL a Duplicate | VYBERTE POČET (*) Z {tabulkyName} |
COUNT (výraz) | COUNT (výraz) by spočítal hodnotu, kde výraz není null. Výraz může být něco jednoduchého, jako je název sloupce nebo složitý výraz, jako je funkce IF. | VYBERTE COUNT (výraz) z {tableName} |
POČET (DISTINCT výraz) | POČET (výraz DISTINCT) - klíčové slovo DISTINCT by vedlo k započítání pouze jedinečných hodnot jiných než null proti výrazu. Například - COUNT (DISTINCT customerName) - bude počítat pouze řádky, které mají odlišné hodnoty pro jméno zákazníka | VYBERTE POČET (DISTINCT výraz) z {tableName} |
Příklady MySQL COUNT
Testovací data
Pro příklady funkce MySQL COUNT bychom použili následující tabulky a data.
Tabulky:
# 1) Product_Details
Ukládá podrobnosti o různých produktech v obchodě
- product_id - INT
- název_produktu - VARCHAR
- cena - DECIMÁLNÍ
- category_id - INT (ZAHRANIČNÍ KLÍČ - ID z tabulky Category_Details)
# 2) Kategorie_Podrobnosti:
- id_kategorie: INT
- název_kategorie: VARCHAR
Vytvořme tabulky a vložte fiktivní data pomocí níže uvedených dotazů:
CREATE TABLE `product_details` ( `product_id` int NOT NULL, `product_name` varchar(100), `price` decimal(5,2), `category_id` int, FOREIGN KEY (category_id) REFERENCES category_details(category_id), PRIMARY KEY(product_id) ) CREATE TABLE `category_details` ( `category_id` int NOT NULL, `category_name` varchar(100), PRIMARY KEY(category_id) ) INSERT INTO `category_details` (`category_id`,`category_name`) VALUES (1,'FMCG'),(2,'FURNITURE'),(3,'FASHION'),(4,'APPLIANCES'),(5,'ELECTRONICS'); INSERT INTO `product_details` (`product_id`,`product_name`,`price`,`category_id`) VALUES (1,'Biscuits',0.5,1),(2,'Chocolates',1,1), (3, 'Washing Powder',5,1),(4, 'Apple IPhone', 500,5), (5, 'Batteries',2,5),(6,'Floor cleaner',2.5,1),(7,'Jeans- Levis',100,1),(8,'Mixer grinder',50,4),(9,'Capsicum',2,1),(10,'Sugar',1,1),(11,'Study Table',50,2);
Přečtěte si obrázky tabulek s testovacími daty, jak byla vytvořena výše.
Tabulka Product_Details
Tabulka kategorie_detaily
Jednoduché COUNT
V této části uvidíme funkci COUNT nejjednodušším způsobem.
K vrácení počtu řádků bez jakýchkoli kontrol NULL nebo DISTINCT použijeme COUNT.
SELECT COUNT(*) FROM product_details;
Výstup:
implicitní čekání a explicitní čekání v selenu
POČET(*) |
---|
jedenáct |
S výše uvedeným dotazem získáme pouze počet řádků vrácených proti příkazu select.
COUNT s podmínkami
Nyní použijeme funkci COUNT s podmínkami nebo hodnotami sloupců.
Příklad: Předpokládejme, že chceme spočítat ne. řádků, kde neexistují žádné nenulové hodnoty pro názvy produktů.
Můžeme přidat product_name (nebo jakýkoli daný název sloupce) jako výraz ve funkci COUNT, což by pak vedlo k počtu řádků, které mají NON NULL product_name řádky.
SELECT COUNT(product_name) FROM product_details;
V tomto případě bude výstup 11 (protože všechna data testu již mají hodnoty pro sloupec product_name)
Výstup:
COUNT (název_produktu) |
---|
jedenáct |
Přidejte nový řádek s hodnotou NULL pro product_name.
INSERT INTO `product_details` (`product_id`,`product_name`,`price`,`category_id`) VALUES (12,NULL,0.5,1);
SELECT COUNT(product_name) from product_details;
Výše uvedený COUNT dotaz vrátí počet všech řádků, které mají NON NULL název_produktu.
Protože jsme vložili řádek s NULL název_produktu, ve výsledcích by se nevrátil. Takže výstup bude stále 11 řádků.
Výstup:
COUNT (název_produktu) |
---|
jedenáct |
POČET s DISTINCT
V předchozích příkladech jsme použili funkci COUNT s výrazem. Můžeme také kombinovat výraz s příkazem DISTINCT a získat všechny NON NULL hodnoty, které jsou také JEDINEČNÉ.
co je klíč zabezpečení sítě?
Zkusme získat DISTINCT category_id z tabulky product_details.
SELECT COUNT(DISTINCT category_id) from product_details;
Výstup:
COUNT (DISTINCT category_id) |
---|
4 |
Jak vidíte výše - výstup je 4, což představuje celkový počet. category_id v tabulce product_details.
POČET S SKUPINOU PODLE
Podívejme se na příklad, kde chceme použít COUNT spolu s GROUP BY. Toto je důležitá kombinace, kde můžeme získat COUNT proti seskupenému sloupci a analyzovat data v závislosti na různých hodnotách cílového seskupeného sloupce.
Například: Najděte číslo produktů v každé kategorii z tabulky product_details.
SELECT category_id, COUNT(*) FROM product_details GROUP BY category_id;
id_kategorie | POČET(*) |
---|---|
1 | 7 |
dva | 1 |
4 | 1 |
5 | dva |
Jak vidíme výše, u každého category_id představuje sloupec COUNT (*) počet řádků patřících ke každému category_id.
POČET S IF
Podívejme se na příklad použití podmínky IF uvnitř funkce COUNT. Můžeme umístit výraz IF do funkce COUNT a nastavit hodnotu na NULL pro falešnou podmínku a jakoukoli nenulovou hodnotu pro skutečnou podmínku.
Každá NON NULL hodnota by se počítala jako jeden řádek bez funkce COUNT.
Například: Pomocí funkce POČET najděte všechny produkty v cenovém rozpětí 20 $.
SELECT COUNT(IF(price >0 AND price<20, 1, NULL)) AS count_less_than_20 FROM product_details;
Výstup:
count_less_than_20 |
---|
7 |
Ve výše uvedeném dotazu jsme získali POČET všech produktů, jejichž cenové rozpětí je mezi 0 a 20. Pro podmínku FALSE jsme nastavili hodnotu na NULL, která se nepočítá, když je řádek vyhodnocen pro různé hodnoty sloupců .
POČET S PŘIPOJENÍMI
COUNT lze použít také s příkazy JOIN. Protože COUNT platí pro číslo řádků, lze jej použít s jakoukoli kombinací dotazu operujícího na jedné tabulce nebo více tabulkách pomocí JOINS.
Příklad: Připojte se k tabulce product_details i category_details a najděte počet podle kategorie_name z tabulky product_details.
SELECT category_name, COUNT(category_name) from product_details pd INNER JOIN category_details cd ON cd.category_id = pd.category_id GROUP BY category_name;
Výstup:
Název Kategorie | COUNT (název_kategorie) |
---|---|
FMCG | 7 |
NÁBYTEK | 1 |
SPOTŘEBIČE | 1 |
ELEKTRONIKA | dva |
Tip a trik
Použití aliasu sloupce pro sloupec, který zobrazuje výsledek funkce COUNT: Alias sloupce spolu s funkcí COUNT můžeme použít k tomu, abychom měli uživatelem definované názvy sloupců pro sloupec zobrazující výsledky funkce COUNT.
Například: Předpokládejme, že chceme spočítat počet kategorií v tabulce category_details a pojmenovat výsledný sloupec jako category_count, můžeme použít níže uvedený dotaz:
SELECT COUNT(*) as category_count from category_details;
Výstup:
category_count |
---|
5 |
Často kladené otázky
Otázka č. 1) Jak mohu použít funkci COUNT v MySQL?
Odpovědět: Funkce COUNT je agregační funkce, kterou lze použít 3 způsoby.
- POČET(*) - To by POČET všech řádků vrácených VYBERTE DOTAZ.
- COUNT (výraz) - To by POČET všech NON NULL hodnot výrazu.
- POČET (DISTINCT výraz) - Tím by se proti výrazu POČÍTALY všechny NON NULL a UNIQUE hodnoty.
Otázka 2) Jaký je rozdíl mezi Count (*) a Count (1) v SQL?
Odpovědět: Obě prohlášení se chovají stejným způsobem. Z definice COUNT v MySQL je cokoli v závorkách () výraz - a jakákoli NON NULL hodnota by se počítala jako 1.
Takže v tomto případě se s * a 1 zachází jako s NON NULL a vrátí se stejný výsledek, tj. Výsledek obou níže uvedených dotazů bude stejný.
SELECT COUNT(*) from product_details; SELECT COUNT(1) from product_details;
Závěr
V tomto tutoriálu jsme se dozvěděli o funkci COUNT a různých variantách poskytovaných MySQL.
Také jsme viděli, jak můžeme použít COUNT v různých scénářích, jako je kombinace COUNT s GROUP BY a psaní funkce IF v rámci funkce COUNT.
Funkce COUNT je jednou z nejdůležitějších a široce používaných funkcí v MySQL a do značné míry se používá k agregaci dat v závislosti na zadaných podmínkách pro jednu nebo více tabulek.
Doporučené čtení
- MySQL ALTER TABLE - Jak přidat sloupec do tabulky v MySQL
- Funkce MySQL CONCAT a GROUP_CONCAT s příklady
- MySQL CREATE USER: Jak vytvořit nového uživatele v MySQL
- Výukový program MySQL JOIN: vnitřní, vnější, křížový, levý, pravý a vlastní
- MySQL LIKE - výuka se syntaxí a příklady použití
- Klauzule MySQL GROUP BY - výukový program s příklady
- Funkce MySQL Substring a Substring_Index s příklady
- MySQL Create View Tutorial s příklady kódu