Data redundans opstår af mange årsager. Flere af de komplicerede opgaver, du skal klare, når du arbejder med databasesystemer, forsøger at finde duplikatværdier. Til dette formål bruger vi COUNT () -aggregatmetoden. COUNT () -metoden returnerer summen af rækker, der findes i en bestemt tabel. COUNT () -funktionen giver dig mulighed for at sammenfatte alle rækker eller kun rækker, der matcher den definerede betingelse. I denne vejledning lærer du at vide, hvordan du identificerer duplikatværdier for en eller måske flere MySQL-kolonner ved hjælp af COUNT (). COUNT () -metoden har følgende tre typer:
- TÆLLE(*)
- COUNT (udtryk)
- COUNT (DISTINCT-udtryk)
Gør det klart, at du har MySQL installeret på dit system. Åbn MySQL-kommandolinjeklientskallen, og indtast din adgangskode for at fortsætte. Vi vil se på nogle eksempler til at tælle de matchende værdier ved hjælp af COUNT () -metoden.
Vi har en tabel 'social' i vores skemadata '. Lad os kontrollere dens post via følgende forespørgsel.
>> VÆLG * FRA data.social;
MySQL-TÆLLING (*)
COUNT (*) -metoden bruges til at tælle antallet af rækker, der findes i tabellen eller tælle antallet af rækker efter den givne betingelse. For at kontrollere det samlede antal rækker i en tabel, 'social', prøv nedenstående forespørgsel. Vi har i alt 15 rækker i tabellen i henhold til resultatet.
>> VÆLG TÆLL (*) FRA data.social;
Få et glimt af COUNT (*) -metoden, mens du definerer nogle betingelser. Vi er nødt til at hente antallet af rækker, hvor brugernavnet er det samme som 'Mustafa'. Du kan se, at vi kun har 4 poster for dette navn.
>> VÆLG TÆLL (*) FRA data.social WHERE User = 'Mustafa';
For at hente den samlede sum af rækker, hvor brugernes hjemmeside er 'Instagram', skal du prøve nedenstående forespørgsel. Tabellen 'social' har kun 4 poster for hjemmesiden 'Instagram'.
>> VÆLG TÆLL (*) FRA data.social WHERE Website = 'Instagram';
At hente det samlede antal rækker, hvor 'Alder' er større end 18, er som følger:
>> VÆLG TÆLL (*) FRA data.social WHERE Alder> 18;
Lad os hente dataene fra kolonnerne 'Bruger' og 'Hjemmeside' fra en tabel, hvor brugernavnet starter med alfabetet 'M'. Prøv nedenstående instruktion på skallen.
>> VÆLG bruger, websted FRA data.social WHERE Bruger som 'M%';
MySQL COUNT (udtryk)
I MySQL bruges COUNT (udtryk) -metoden kun, når du vil tælle værdier, der ikke er nul, i kolonnens 'udtryk'. 'Udtrykket' ville være navnet på en hvilken som helst kolonne. Lad os tage et simpelt eksempel på det. Vi har kun talt de ikke-nulværdier i en kolonne 'Website', som er relateret til kolonnen 'Alder' med en værdi, der svarer til '25'. Se! Vi har kun 4 poster, der ikke er nul, for brugere med alderen '25', der bruger websteder.
>> VÆLG TÆLL (websted) FRA data.social WHERE Alder = 25;
MySQL COUNT (DISTNCT-udtryk)
I MySQL bruges metoden COUNT (DISTINCT expression) til at sammenfatte værdier, der ikke er nul, og forskellige værdier i kolonnen 'udtryk'. For at tælle et tydeligt antal ikke-nul-værdier i kolonnen 'Alder' har vi brugt nedenstående forespørgsel. Du finder 6 ikke-nul og forskellige optegnelser over kolonnen 'Alder' fra tabellen 'social'. Det betyder, at vi i alt har 6 personer med forskellige aldre.
>> VÆLG TÆLL (DISTINCT Age) FRA data.social;
MySQL-TÆLLING (HVIS (udtryk))
For stor vægt skal du flette COUNT () med flowkontrolfunktioner. Til at begynde med, for en del af udtrykket, der bruges i metoden COUNT (), kan du bruge funktionen IF (). Det kan være meget nyttigt at gøre dette for at give en hurtig opdeling af oplysningerne i en database. Vi tæller antallet af rækker med forskellige aldersbetingelser og deler dem i tre forskellige kolonner, hvilket kan siges som kategorier. For det første tæller COUNT (IF) de rækker, der er under 20 år, og gemmer dette antal i en ny kolonne med navnet 'Teenage'. Andet TÆLLING (HVIS) tæller rækkerne i alderen 20 til 30, mens det gemmes i en kolonne 'Ung'. For det tredje tæller de sidste rækkerne med aldre over 30 og gemt i en kolonne 'Moden'. Vi har 5 teenagere, 9 unge og kun 1 moden person i vores rekord.
>> VÆLG TÆLL (HVIS (Alder < 20,1,NULL)) 'Teenage', COUNT(IF(Age BETWEEN 20 AND 30,1,NULL)) 'Young', COUNT(IF(Age > 30,1, NULL)) 'Moden' FRA data.social;
MySQL COUNT (*) med GROUP BY-klausul
GROUP BY-sætningen er en SQL-instruktion, der bruger til grupperækker med de samme værdier. Det returnerer det samlede antal værdier, der findes i hver gruppe. For eksempel, hvis du vil kontrollere hver brugers nummer separat, skal du definere kolonnen 'Bruger' med GROUP BY-klausulen, mens du tæller poster for hver bruger med COUNT (*).
>> VÆLG bruger, TÆLL (*) FRA data.social GROUP BY bruger;
Du kan enten vælge mere end to kolonner, mens du udfører optælling af rækker sammen med GROUP BY-klausulen som følger.
>> VÆLG bruger, alder, websted, COUNT (*) FRA data.social GROUP BY Website;
Hvis vi vil tælle rækker, mens vi bruger WHERE-klausulen med nogle betingelser i den sammen med GROUP BY og COUNT (*), kan du også gøre det. Nedenstående forespørgsel henter og tæller posterne i kolonner: 'Bruger', 'Websted' og 'Alder', hvor webstedsværdien kun er 'Instagram' og 'Snapchat'. Du kan se, at vi kun har 1 post for begge websteder for forskellige brugere.
>> VÆLG bruger, hjemmeside, alder, COUNT (*) FRA data.social WHERE Website = 'Instagram' Eller Website = 'Snapchat' GROUP BY Website, Alder;
MySQL COUNT (*) med GROUP BY og ORDER BY-klausul
Lad os prøve GROUP BY- og ORDER BY-klausulerne sammen med COUNT () -metoden. Lad os hente og tælle rækkerne i tabellen 'social', mens vi arrangerer dataene i faldende rækkefølge ved hjælp af denne forespørgsel:
>> VÆLG bruger, hjemmeside, alder, COUNT (*) FRA data.social GRUPPE Efter alder BESTIL EFTER LAND (*) DESC;
Den nedenstående forespørgsel tæller først rækkerne og viser derefter de eneste poster, der har COUNT større end 2 i stigende rækkefølge.
>> VÆLG bruger, alder, COUNT (*) FRA data.social GRUPPE EFTER Alder MED TÆLLING (*)> 2 ORDRE EFTER LAND (*) ASC;
Konklusion
Vi har gennemgået alle de mulige metoder til at tælle de matchende eller duplikerede poster ved hjælp af COUNT () -metoden med forskellige andre klausuler.