mysql count count distinct with examples
Saznajte o upotrebi različitih oblika funkcije MySQL COUNT s primjerima:
COUNT je jednostavna skupna funkcija, ali vrlo učinkovita i široko korištena. Vrlo jednostavnim riječima koristi se za brojanje broja redaka u odnosu na zadani SELECT upit i kriterije.
Ovaj će vodič objasniti sintaksu i upotrebu jednostavnih COUNT, COUNT s uvjetima, COUNT s DISTINCT, COUNT s GROUP BY, itd.
Što ćete naučiti:
Razne vrste MySQL COUNT-a
Tip | Opis | Sintaksa |
---|---|---|
RAČUNATI(*) | Funkcija COUNT (*) vraća br. redova dohvaćenih naredbom SELECT, uključujući retke koji sadrže NULL i duplicirane vrijednosti | ODABERITE BROJ (*) IZ {tableName} |
COUNT (izraz) | COUNT (izraz) računao bi vrijednost gdje izraz nije null. Izraz može biti nešto jednostavno poput naziva stupca ili složenog izraza kao što je IF funkcija. | ODABERITE COUNT (izraz) iz tablice {tableName} |
COUNT (DISTINCT izraz) | COUNT (DISTINCT izraz) - ključna riječ DISTINCT rezultirala bi brojanjem samo jedinstvenih ne null vrijednosti protiv izraza. Na primjer - COUNT (DISTINCT customerName) - brojao bi samo retke koji imaju različite vrijednosti za ime kupca | ODABERITE COUNT (DISTINCT izraz) iz {tableName} |
MySQL COUNT Primjeri
Podaci o ispitivanju
Za primjere funkcije MySQL COUNT koristili bismo sljedeće tablice i podatke.
Tablice:
# 1) Product_Details
Pohranjuje detalje o raznim proizvodima u trgovini
world of warcraft privatni poslužitelji vanilija
- product_id - INT
- naziv_proizvoda - VARCHAR
- cijena - DECIMALNA
- category_id - INT (STRANI KLJUČ - id iz tablice Category_Details)
# 2) Detalji_kategorije:
- id_kategorije: INT
- ime_kategorije: VARCHAR
Stvorimo tablice i ubacimo lažne podatke pomoću upita u nastavku:
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);
Pogledajte slike tablica s ispitnim podacima kako su gore stvorene.
Tablica_pojedinosti o proizvodu
Tablica kategorija_pojedinosti
Jednostavno COUNT
U ovom ćemo odjeljku na najjednostavniji način vidjeti funkciju COUNT.
Upotrijebit ćemo COUNT za vraćanje broja redaka bez provjere NULL ili DISTINCT.
SELECT COUNT(*) FROM product_details;
Izlaz:
RAČUNATI(*) |
---|
jedanaest |
S gornjim upitom dobit ćemo samo broj redaka vraćenih u odnosu na naredbu select.
RAČUNAJTE s uvjetima
Sada ćemo koristiti funkciju COUNT s uvjetima ili vrijednostima stupaca.
Primjer: Pretpostavimo da želimo računati br. redaka u kojima ne postoje vrijednosti koje nisu nule za nazive proizvoda.
Možemo dodati naziv proizvoda (ili bilo koje zadano ime stupca) kao izraz u funkciji COUNT, što bi rezultiralo brojanjem redaka koji imaju NON NULL redova imena proizvoda.
SELECT COUNT(product_name) FROM product_details;
U ovom slučaju, izlaz će biti 11 (jer svi test podaci već imaju vrijednosti za stupac ime proizvoda)
Izlaz:
COUNT (naziv_proizvoda) |
---|
jedanaest |
Dodajmo novi red s NULL vrijednošću za 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;
Gornji COUNT upit vratit će broj svih redaka koji imaju NON NULL ime_proizvoda.
Budući da smo umetnuli redak s NULL product_name, to se neće vratiti u rezultate. Tako bi izlaz bio još uvijek 11 redaka.
Izlaz:
COUNT (naziv_proizvoda) |
---|
jedanaest |
RAČUNAJTE SA DISTINCTOM
U prethodnim primjerima koristili smo funkciju COUNT s izrazom. Izraz također možemo kombinirati s naredbom DISTINCT da bismo dobili sve vrijednosti NON NULL, koje su također JEDINSTVENE.
Pokušajmo dobiti DISTINCT category_id iz tablice product_details.
SELECT COUNT(DISTINCT category_id) from product_details;
Izlaz:
COUNT (DISTINCT kategorija_id) |
---|
4 |
Kao što vidite gore - izlaz je 4, što predstavlja ukupni br. od category_id u tablici product_details.
RAČUNAJTE SA GROUP BY
Pogledajmo primjer gdje želimo koristiti COUNT zajedno s GROUP BY. Ovo je važna kombinacija u kojoj možemo dobiti COUNT prema grupiranom stupcu i analizirati podatke ovisno o različitim vrijednostima ciljnog grupiranog stupca.
Na primjer: Pronađite br. proizvoda u odnosu na svaku kategoriju iz tablice product_details.
SELECT category_id, COUNT(*) FROM product_details GROUP BY category_id;
id_kategorije | RAČUNATI(*) |
---|---|
1 | 7 |
dva | 1 |
4 | 1 |
5 | dva |
Kao što vidimo gore, protiv svakog id_kategorije stupac COUNT (*) predstavlja broj redaka koji pripadaju svakom id_kategorije.
RAČUNAJ SA IF
Pogledajmo primjer upotrebe uvjeta IF unutar funkcije COUNT. Možemo postaviti izraz IF unutar funkcije COUNT i postaviti vrijednost na NULL za lažno stanje i bilo koju ne-null vrijednost za istinito stanje.
Svaka NON NULL vrijednost računala bi se kao jedan red w.r.t COUNT funkcije.
Na primjer: Upotrijebite funkciju COUNT da biste pronašli sve proizvode u rasponu cijena od 20 USD.
SELECT COUNT(IF(price >0 AND price<20, 1, NULL)) AS count_less_than_20 FROM product_details;
Izlaz:
count_less_than_20 |
---|
7 |
U gornjem upitu dobili smo BROJ svih proizvoda čiji je raspon cijena između 0 i 20. Za uvjet FALSE postavili smo vrijednost NULL, koja se ne računa, kada se redak procjenjuje za različite vrijednosti stupaca .
RAČUNAJTE SA PRIDRUŽIVANJIMA
COUNT se može koristiti i s naredbama JOIN. Budući da se COUNT odnosi na br. redaka, može se koristiti s bilo kojom kombinacijom upita koji djeluje na jednoj tablici ili više njih pomoću JOINS.
Primjer: Pridružite se tablicama product_details i category_details i pronađite count by name_name iz tablice 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;
Izlaz:
ime kategorije | COUNT (ime_kategorije) |
---|---|
FMCG | 7 |
NAMJEŠTAJ | 1 |
UREĐAJI | 1 |
ELEKTRONIKA | dva |
Savjet i trik
Korištenje pseudonima stupca za stupac koji prikazuje rezultat funkcije COUNT: Možemo koristiti pseudonim stupca zajedno s funkcijom COUNT kako bismo imali korisnički definirana imena stupaca za stupac koji prikazuju rezultate funkcije COUNT.
Na primjer: Pretpostavimo da želimo brojati broj kategorija u tablici kategorija_detalji i rezultirajući stupac imenovati brojem kategorija_, možemo koristiti upit ispod:
SELECT COUNT(*) as category_count from category_details;
Izlaz:
kategorija_broj |
---|
5 |
Često postavljana pitanja
P # 1) Kako se koristi funkcija COUNT u MySQL?
Odgovor: Funkcija COUNT je skupna funkcija koja se može koristiti na 3 načina.
- BROJ (*) - Ovo bi PREBROJILO sve retke koje vraća SELECT QUERY.
- COUNT (izraz) - Ovo bi BROJILO sve NON NULL vrijednosti za izraz.
- COUNT (DISTINCT izraz) - To bi brojilo sve NON NULL i UNIQUE vrijednosti prema izrazu.
P # 2) Koja je razlika između Count (*) i Count (1) u SQL-u?
Odgovor: Obje se izjave ponašaju na identičan način. Iz MySQL-ove definicije COUNT, sve što je u zagradama () izraz je - a svaka NON NULL vrijednost računati će se kao 1.
Dakle, u ovom slučaju i * i 1 tretiraju se kao NON NULL i vraća se isti rezultat, tj. Rezultat oba upita u nastavku bio bi isti.
SELECT COUNT(*) from product_details; SELECT COUNT(1) from product_details;
Zaključak
U ovom uputstvu saznali smo o funkciji COUNT i različitim varijacijama koje pruža MySQL.
Također smo vidjeli kako možemo koristiti COUNT s različitim scenarijima, poput kombiniranja COUNT s GROUP BY i pisanja funkcije IF unutar funkcije COUNT.
Funkcija COUNT jedna je od najvažnijih i najčešće korištenih funkcija u MySQL-u i uglavnom se koristi za prikupljanje podataka ovisno o navedenim uvjetima za jednu ili više tablica.
Preporučena literatura
- MySQL ALTER TABLE - Kako dodati stupac tablici u MySQL
- MySQL CONCAT i GROUP_CONCAT funkcije s primjerima
- MySQL STVORI KORISNIKA: Kako stvoriti novog korisnika u MySQL-u
- MySQL JOIN Vodič: Unutarnji, vanjski, križni, lijevi, desni i ja
- MySQL LIKE - Vodič sa primjerima sintakse i upotrebe
- Klauzula MySQL GROUP BY - Vodič sa primjerima
- MySQL podniz i funkcije podniza_Index s primjerima
- MySQL Vodič za stvaranje pogleda s primjerima koda