Redundancja danych występuje z wielu powodów. Kilka skomplikowanych obowiązków, z którymi należy się uporać podczas pracy z systemami bazodanowymi, to próba wykrycia zduplikowanych wartości. W tym celu użyjemy metody agregującej COUNT(). Metoda COUNT() zwraca sumę wierszy znajdujących się w określonej tabeli. Funkcja COUNT() pozwala zsumować wszystkie wiersze lub tylko wiersze spełniające zdefiniowany warunek. W tym przewodniku dowiesz się, jak zidentyfikować zduplikowane wartości dla jednej lub więcej kolumn MySQL za pomocą funkcji COUNT(). Metoda COUNT() ma następujące trzy typy:
- LICZYĆ(*)
- LICZBA(wyrażenie)
- LICZBA(wyrażenie DISTINCT)
Określ, że masz zainstalowany MySQL w swoim systemie. Otwórz powłokę klienta wiersza poleceń MySQL i wprowadź hasło, aby kontynuować. Przyjrzymy się kilku przykładom zliczania pasujących wartości za pomocą metody COUNT().
W naszym schemacie „data” mamy tabelę „social”. Sprawdźmy jego rekord za pomocą następującego zapytania.
>> WYBIERZ * Z danych.społeczny;
LICZBA MYSQL(*)
Metoda COUNT(*) służy do zliczania liczby wierszy znajdujących się w tabeli lub zliczania liczby wierszy zgodnie z zadanym warunkiem. Aby sprawdzić łączną liczbę wierszy w tabeli, „społecznościowe” wypróbuj poniższe zapytanie. W tabeli mamy łącznie 15 wierszy zgodnie z wynikiem.
>> WYBIERZ LICZNIK(*) Z danych.społeczny;
Rzuć okiem na metodę COUNT(*) podczas definiowania niektórych warunków. Musimy pobrać liczbę wierszy, w których nazwa użytkownika jest taka sama jak „Mustafa”. Jak widzisz, mamy tylko 4 rekordy dla tej konkretnej nazwy.
>> WYBIERZ LICZNIK(*) Z danych.społecznościowy WHERE Użytkownik = 'Mustafa';
Aby pobrać łączną sumę wierszy, w których witryna użytkownika to „Instagram”, wypróbuj poniższe zapytanie. Tabela „społecznościowe” zawiera tylko 4 rekordy dla witryny „Instagram”.
>> WYBIERZ LICZNIK(*) Z danych.serwis społecznościowy WHERE = 'Instagram';
Aby pobrać całkowitą liczbę wierszy, w których „Wiek” jest większy niż 18, należy:
>> WYBIERZ LICZNIK(*) Z danych.społeczne GDZIE Wiek > 18 lat;
Pobieramy dane kolumn 'Użytkownik' i 'Witryna' z tabeli, gdzie nazwa Użytkownika zaczyna się od litery 'M'. Wypróbuj poniższą instrukcję na obudowie.
>> SELECT User, Website FROM data.społecznościowy WHERE Użytkownik taki jak 'M%';
LICZBA MySQL(wyrażenie)
W MySQL metoda COUNT(expression) jest używana tylko wtedy, gdy chcesz zliczyć wartości inne niż Null w kolumnie „expression”. „Wyrażenie” byłoby nazwą dowolnej kolumny. Weźmy prosty przykład. Liczyliśmy tylko niepuste wartości kolumny „Witryna”, która jest powiązana z kolumną „Wiek” mającą wartość równą „25”. Widzieć! Mamy tylko 4 niepuste rekordy dla użytkowników w wieku '25', którzy korzystają ze stron internetowych.
>> WYBIERZ LICZNIK(Witryna) Z danych.społeczne GDZIE Wiek = 25;
MySQL COUNT (wyrażenie DISTNCT)
W MySQL metoda COUNT(DISTINCT expression) służy do sumowania wartości innych niż Null i odrębnych wartości kolumny „expression”. Aby policzyć wyraźną liczbę wartości innych niż null w kolumnie „Wiek”, użyliśmy poniższego zapytania. Znajdziesz 6 niezerowych i odrębnych rekordów kolumny „Wiek” z tabeli „społeczne”. Oznacza to, że mamy w sumie 6 osób w różnym wieku.
>> WYBIERZ LICZBĘ (RÓŻNE Wiek) Z danych.społeczny;
LICZBA MySQL(JEŻELI(wyrażenie))
Aby uzyskać duży nacisk, powinieneś połączyć COUNT() z funkcjami kontroli przepływu. Na początek, dla części wyrażenia używanego w metodzie COUNT() możesz użyć funkcji JEŻELI(). Może to być bardzo przydatne, aby zapewnić szybki podział informacji w bazie danych. Będziemy liczyć liczbę wierszy z różnymi warunkami wiekowymi i dzielić je na trzy różne kolumny, które można określić jako kategorie. Po pierwsze, LICZBA (JEŻELI) zlicza wiersze mające mniej niż 20 lat i zapisze tę liczbę w nowej kolumnie o nazwie „Nastoletni”. Drugie LICZENIE(JEŻELI) zlicza wiersze w wieku od 20 do 30 lat, zapisując je w kolumnie „Młody”. Po trzecie, ostatni zlicza wiersze mające wiek powyżej 30 lat i zapisane w kolumnie „Dojrzałe”. W naszym rekordzie mamy 5 nastolatków, 9 młodych i tylko 1 osobę dojrzałą.
>> WYBIERZ LICZNIK(JEŻELI(Wiek < 20,1,NULL)) 'Teenage', COUNT(IF(Age BETWEEN 20 AND 30,1,NULL)) 'Young', COUNT(IF(Age > 30,1,NULL)) 'Dojrzały' Z danych.społeczny;
MySQL COUNT(*) z klauzulą GROUP BY
Instrukcja GROUP BY jest instrukcją SQL używaną dla grup wierszy o tych samych wartościach. Zwraca całkowitą liczbę wartości znajdujących się w każdej grupie. Na przykład, jeśli chcesz sprawdzić numer każdego użytkownika osobno, musisz zdefiniować kolumnę 'Użytkownik' klauzulą GROUP BY podczas zliczania rekordów dla każdego użytkownika z COUNT(*).
>> SELECT User, COUNT(*) FROM data.social GRUPA WEDŁUG Użytkownika;
Możesz wybrać więcej niż dwie kolumny podczas liczenia wierszy wraz z klauzulą GROUP BY w następujący sposób.
>> SELECT Użytkownik, Wiek, Witryna, COUNT(*) Z danych F.serwis społecznościowy GROUP BY;
Jeśli chcemy policzyć wiersze, używając klauzuli WHERE zawierającej pewne warunki obok GROUP BY i COUNT(*), możesz to również zrobić. Poniższe zapytanie pobierze i policzy rekordy kolumn: „Użytkownik”, „Witryna” i „Wiek”, gdzie wartością witryny jest tylko „Instagram” i „Snapchat”. Jak widzisz, mamy tylko 1 rekord dla obu witryn dla różnych użytkowników.
>> SELECT Użytkownik, Witryna, Wiek, COUNT(*) Z danych.społecznościowe WHERE Witryna = „Instagram” Lub Witryna = „Snapchat” GROUP BY Witryna, wiek;
MySQL COUNT(*) z klauzulą GROUP BY i ORDER BY
Wypróbujmy klauzule GROUP BY i ORDER BY łącznie z metodą COUNT(). Pobierzmy i policzmy wiersze tabeli „social”, porządkując dane w kolejności malejącej za pomocą tego zapytania:
>> SELECT Użytkownik, Witryna, Wiek, COUNT(*) FROM danych.social GRUPA WEDŁUG WIEKU ORDER BY COUNT(*) DESC;
Poniższe zapytanie najpierw zliczy wiersze, a następnie wyświetli jedyne rekordy, których LICZBA jest większa niż 2 w kolejności rosnącej.
>> SELECT Użytkownik, Wiek, COUNT(*) Z danych.social GRUPA WEDŁUG WIEKU MIEJĄC LICZBĘ(*) > 2 ORDER BY COUNT(*) ASC;
Wniosek
Przeszliśmy przez wszystkie możliwe metody liczenia pasujących lub zduplikowanych rekordów za pomocą metody COUNT() z różnymi innymi klauzulami.