mysql count count distinct with examples
Obteniu més informació sobre els usos de diverses formes de la funció MySQL COUNT amb exemples:
COUNT és una funció agregada simple, però molt eficaç i àmpliament utilitzada. En paraules molt senzilles, s’utilitza per COMPTAR el nombre de files en funció d’una consulta i criteris SELECT determinats.
Aquest tutorial explicarà la sintaxi i l'ús de COUNT simples, COUNT amb condicions, COUNT amb DISTINCT, COUNT amb GROUP BY, etc.
Què aprendreu:
Diversos tipus de MySQL COUNT
Tipus | Descripció | Sintaxi |
---|---|---|
COMPTE (*) | La funció COUNT (*) retorna el núm. de files recuperades per la sentència SELECT, incloses les files que contenen valors NULL i Duplicat | SELECCIONA EL COMPTE (*) DE {tableName} |
COUNT (expressió) | COUNT (expressió) comptaria el valor en què l'expressió no és nul·la. L'expressió pot ser senzilla, com ara un nom de columna o una expressió complexa, com ara Funció IF. | SELECCIONA EL COMPTE (expressió) de {tableName} |
COUNT (expressió DISTINT) | COUNT (expressió DISTINCT): la paraula clau DISTINCT es traduiria en comptar només valors únics no nuls contra l'expressió. Per exemple - COUNT (DISTINCT customerName): només comptarà les files que tinguin valors diferents per al nom del client | SELECCIONA EL COMPTE (expressió DISTINGUT) de {tableName} |
MySQL COUNT Exemples
Dades de prova
Utilitzaríem les següents taules i dades per als exemples de la funció MySQL COUNT.
Taules:
# 1) Detalls del producte
Emmagatzema detalls de diversos productes en una botiga
- product_id - INT
- product_name: VARCHAR
- preu - DECIMAL
- category_id - INT (FOREIGN KEY - id de la taula Category_Details)
# 2) Detalls de la categoria:
- categoria_id: INT
- nom_categoria: VARCHAR
Creem les taules i inserim dades fictícies mitjançant les consultes següents:
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);
Consulteu les imatges de les taules amb les dades de prova tal com es van crear anteriorment.
Taula Producte_Detalls
Taula Categoria_Detalls
com obrir un fitxer apk
COUNT simple
En aquesta secció, veurem la funció COUNT de la manera més senzilla.
Utilitzarem COUNT per retornar el nombre de files sense cap comprovació NULL o DISTINGUT.
SELECT COUNT(*) FROM product_details;
Sortida:
COMPTE (*) |
---|
11 |
Amb la consulta anterior, només obtindrem el nombre de files retornades a la sentència select.
COMPTE Amb condicions
Ara utilitzarem la funció COUNT amb condicions o valors de columna.
Exemple: Suposem que volem comptar el no. de files on no hi ha valors no nuls per als noms de producte.
Podem afegir nom_producte (o qualsevol nom de columna donat) com a expressió a la funció COUNT, que donaria lloc a un recompte de files que contenen files de nom_producte NON NULL
SELECT COUNT(product_name) FROM product_details;
En aquest cas, la sortida serà 11 (ja que totes les dades de prova ja tenen valors per a la columna nom_producte)
Sortida:
COUNT (nom_producte) |
---|
11 |
Afegim una fila nova, amb un valor NULL per a 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;
La consulta COUNT anterior retornarà el recompte de totes les files que tinguin un nom de producte NON NULL.
Com que hem inserit una fila amb NOM product_name, no es tornaria als resultats. Per tant, la sortida continuaria sent d’11 files.
Sortida:
COUNT (nom_producte) |
---|
11 |
COMPTE amb DISTINGUT
En els exemples anteriors, hem utilitzat la funció COUNT amb una expressió. També podem combinar l’expressió amb una ordre DISTINCT per obtenir tots els valors NON NULL, que també són ÚNICS.
Intentem obtenir el DISTINCT category_id de la taula product_details.
SELECT COUNT(DISTINCT category_id) from product_details;
Sortida:
COUNT (identificador de categoria DISTINCT) |
---|
4 |
Com podeu veure més amunt, la sortida és 4, que representa el número total. dels categories_id de la taula product_details.
COMPTE AMB GRUP PER
Vegem un exemple en què volem utilitzar COUNT juntament amb GROUP BY. Aquesta és una combinació important en la qual podem obtenir un COUNT contra una columna agrupada i analitzar dades en funció dels diferents valors d’una columna agrupada objectiu.
Per exemple: Troba el núm. de productes de cada categoria a la taula product_details.
SELECT category_id, COUNT(*) FROM product_details GROUP BY category_id;
identificador_de_categoria | COMPTE (*) |
---|---|
1 | 7 |
2 | 1 |
4 | 1 |
5 | 2 |
Com podem veure més amunt, contra cada categoria_id, la columna COMPTE (*) representa el nombre de files que pertanyen a cada categoria_id.
COMPTE Amb IF
Vegem un exemple d’utilitzar una condició IF dins de la funció COUNT. Podem col·locar una expressió IF dins de la funció COUNT i establir el valor en NULL per a la condició falsa i qualsevol valor no nul per a la condició veritable.
Tots els valors NON NULL es comptabilitzaran com una única funció w.r.t COUNT de fila.
Per exemple: Utilitzeu la funció COMPTE per trobar tots els productes dins del rang de preus de 20 $.
SELECT COUNT(IF(price >0 AND price<20, 1, NULL)) AS count_less_than_20 FROM product_details;
Sortida:
count_less_than_20 |
---|
7 |
A la consulta anterior, hem obtingut el COUNT de tots els productes que tenen un rang de preus entre 0 i 20. Per a la condició FALS, hem establert el valor a NULL, que no es compta, quan la fila s’avalua per a valors de columna diferents .
COMPTE AMB JOINS
COUNT també es pot utilitzar amb sentències JOIN. Atès que COUNT s'aplica al núm. de files, es pot utilitzar amb qualsevol combinació d'una consulta que funcioni en una sola taula o en diverses taules mitjançant JOINS.
Exemple: Uniu-vos tant a la taula product_details com a category_details i cerqueu el recompte per nom_categoria a la taula 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;
Sortida:
nom_categoria | COUNT (nom_categoria) |
---|---|
FMCG | 7 |
MOBLES | 1 |
APARELLS | 1 |
ELECTRONNICA | 2 |
Tip & Trick
Utilitzant l'àlies de columna per a la columna que mostra el resultat de la funció COUNT: podem utilitzar un àlies de columna juntament amb la funció COUNT per tenir noms de columna definits per l'usuari per a la columna que mostra els resultats de la funció COUNT.
Per exemple: Suposem que volem comptar el nombre de categories a la taula categories_detalls i anomenar la columna resultant com a categoria_compte, que podem utilitzar a continuació:
SELECT COUNT(*) as category_count from category_details;
Sortida:
nombre_categoria |
---|
5 |
Preguntes freqüents
P # 1) Com puc utilitzar la funció COUNT a MySQL?
Resposta: La funció COUNT és una funció agregada que es pot utilitzar de 3 maneres.
- COUNT (*) - Això COMPTARÀ totes les files retornades per SELECT QUERY.
- COUNT (expressió) - Això comptaria tots els valors NO NULS de l'expressió.
- COUNT (expressió DISTINT) - Això comptaria tots els valors NO NULS i ÚNICS contra l'expressió.
Q # 2) Quina diferència hi ha entre Count (*) i Count (1) a SQL?
Resposta: Ambdues afirmacions es comporten de la mateixa manera. A partir de la definició de COUNT de MySQL, qualsevol cosa entre parèntesis () és una expressió i qualsevol valor NON NULL es comptabilitzarà com a 1.
Per tant, en aquest cas, tant * com 1 es tracten com NON NULL i es torna el mateix resultat, és a dir, el resultat de les consultes següents seria el mateix.
SELECT COUNT(*) from product_details; SELECT COUNT(1) from product_details;
Conclusió
En aquest tutorial, hem après sobre la funció COUNT i les diferents variacions que proporciona MySQL.
També vam veure com podem utilitzar COUNT amb diferents escenaris, com combinar COUNT amb GROUP BY i escriure una funció IF dins de la funció COUNT.
La funció COUNT és una de les funcions més importants i àmpliament utilitzades a MySQL i s’utilitza en gran mesura per agregar dades segons les condicions especificades per a una o més taules.
Lectura recomanada
- TAULA D'ALTERACIÓ MySQL: com afegir una columna a una taula de MySQL
- Funcions MySQL CONCAT i GROUP_CONCAT amb exemples
- MySQL CREA USUARI: Com crear un usuari nou a MySQL
- Tutorial MySQL JOIN: Interior, exterior, creuat, esquerre, dret i autònom
- MySQL LIKE: tutorial amb sintaxi i exemples d'ús
- Clàusula MySQL GROUP BY: tutorial amb exemples
- Funcions MySQL Substring i Substring_Index amb exemples
- Tutorial MySQL Create View amb exemples de codi