Radzenie sobie ze zduplikowanymi wartościami w SQL może być kłopotliwym zadaniem. Ale nie bój się, ten przewodnik jest tutaj, aby złagodzić twoje brzemię.
Dane mają różne kształty i formy, ale zduplikowane rekordy są istotną częścią każdego formatu danych. Niezależnie od tego, czy masz do czynienia z danymi internetowymi, czy po prostu poruszasz się po ciężarówce danych dotyczących sprzedaży, Twoja analiza zostanie wypaczona, jeśli masz zduplikowane wartości.
Czy używasz języka SQL do przetwarzania liczb i wykonywania długich zapytań na stosach danych? Jeśli tak, ten przewodnik dotyczący zarządzania duplikatami SQL będzie dla Ciebie absolutną przyjemnością.
Oto kilka różnych sposobów zarządzania duplikatami za pomocą SQL.
1. Liczenie duplikatów przy użyciu funkcji Grupuj według funkcji
SQL to wielopłaszczyznowy język programowania, który oferuje różne funkcje upraszczające obliczenia. Jeśli masz duże doświadczenie z funkcjami agregującymi w SQL, być może znasz już pogrupuj według funkcji i do czego może służyć.
The Grupuj według funkcja jest jedną z większość podstawowych poleceń SQL, co jest idealne do obsługi wielu rekordów, ponieważ można używać różnych funkcji agregujących, takich jak suma, liczyć, przeciętny, i wiele innych w połączeniu z Grupuj według funkcji, aby uzyskać odrębną wartość wierszową.
W zależności od scenariusza możesz znaleźć duplikaty z rozszerzeniem Grupuj według funkcji w jednej kolumnie i wielu kolumnach.
A. Policz duplikaty w jednej kolumnie
Załóżmy, że masz następującą tabelę danych z dwiema kolumnami: ID produktu I Zamówienia.
ID produktu |
Zamówienia |
2 |
7 |
2 |
8 |
2 |
10 |
9 |
6 |
10 |
1 |
10 |
5 |
12 |
5 |
12 |
12 |
12 |
7 |
14 |
1 |
14 |
1 |
47 |
4 |
47 |
4 |
Aby znaleźć zduplikowane identyfikatory produktów, możesz użyć Grupuj według funkcja i mający klauzulę do filtrowania zagregowanych wartości w następujący sposób:
wybierać ID produktu, liczyć(ID produktu) Jak suma_liczba
z sahil.product_dups
grupuj według identyfikatora produktu
mając liczbę (productid) > 1
zamów według identyfikatora produktu;
Podobnie jak w przypadku typowej instrukcji SQL, musisz zacząć od zdefiniowania kolumn, które chcesz wyświetlić w wyniku końcowym. W tym przypadku chcemy wyświetlić liczbę zduplikowanych wartości w pliku ID produktu kolumna.
W pierwszym segmencie zdefiniuj ID produktu kolumna w ramach wybierać oświadczenie. The liczyć funkcja podąża za ID produktu odwołanie, aby SQL zrozumiał cel twojego zapytania.
Następnie zdefiniuj tabelę źródłową za pomocą pliku z klauzula. Od liczyć jest funkcją agregującą, musisz użyć funkcji Grupuj według funkcja grupowania wszystkich podobnych wartości.
Pamiętaj, że chodzi o wypisanie zduplikowanych wartości w pliku ID produktu kolumna. Aby to zrobić, musisz odfiltrować liczbę i wyświetlić wartości występujące więcej niż raz w kolumnie. The mający klauzula filtruje zagregowane dane; możesz użyć warunku, tj. liczba (identyfikator produktu) >1, aby wyświetlić żądane wyniki.
Wreszcie, Zamów przez klauzula sortuje końcowe wyniki w porządku rosnącym.
Dane wyjściowe są następujące:
B. Policz duplikaty w wielu kolumnach
Jeśli chcesz policzyć duplikaty w wielu kolumnach, ale nie chcesz pisać wielu zapytań SQL, możesz rozszerzyć powyższy kod za pomocą kilku poprawek. Na przykład, jeśli chcesz wyświetlić zduplikowane wiersze w wielu kolumnach, możesz użyć następującego kodu:
wybierać produkt, zamówienia, liczyć(*) Jak suma_liczba
z sahil.product_dups
grupuj według identyfikatora produktu, zamówień
mając liczbę (productid) > 1
zamów według identyfikatora produktu;
Na wyjściu zauważysz, że wyświetlane są tylko dwa wiersze. Po dostosowaniu zapytania i dodaniu odwołania do obu kolumn w pliku wybierać instrukcja, otrzymasz liczbę pasujących wierszy ze zduplikowanymi wartościami.
Zamiast tego liczyć (kolumna) funkcji, musisz przekazać liczyć(*) funkcja, aby uzyskać zduplikowane wiersze. The * funkcja przełącza wszystkie wiersze i szuka zduplikowanych wierszy zamiast pojedynczych zduplikowanych wartości.
Dane wyjściowe pokazano poniżej:
Wyświetlane są odpowiednie wiersze z identyfikatorem produktu 14 i 47, ponieważ wartości zamówienia są takie same.
2. Oznaczanie duplikatów za pomocą funkcji row_number().
Podczas Grupuj według I mający kombinacja jest najprostszym sposobem znajdowania i oflagowania duplikatów w tabeli, istnieje alternatywny sposób znajdowania duplikatów za pomocą Numer wiersza() funkcjonować. The Numer wiersza() funkcja jest częścią Funkcje okna SQL kategorii i jest niezbędny do wydajnego przetwarzania zapytań.
Oto jak możesz oflagować duplikaty za pomocą Numer wiersza() funkcjonować:
wybierać produkt, zamówienia,
row_number() over (partycja według productid kolejność według productid) jako sno
z sahil.product_dups;
The Numer wiersza() funkcja przeczesuje każdą wartość identyfikatora produktu i asymiluje liczbę powtórzeń dla każdego identyfikatora. The przegroda słowo kluczowe segreguje zduplikowane wartości i przypisuje je chronologicznie, na przykład 1, 2, 3 itd.
Jeśli nie korzystasz z przegroda słowo kluczowe, będziesz mieć unikalny numer seryjny dla wszystkich identyfikatorów produktów, co nie będzie odpowiadać Twoim celom.
The Zamów przez klauzula w sekcji partycji jest funkcjonalna podczas definiowania porządku sortowania. Możesz wybrać kolejność rosnącą (domyślnie) i malejącą.
Na koniec możesz przypisać alias do kolumny, aby ułatwić późniejsze filtrowanie (w razie potrzeby).
3. Usuwanie zduplikowanych wierszy z tabeli SQL
Ponieważ zduplikowane wartości w tabeli mogą wypaczyć analizę, często konieczne jest wyeliminowanie ich na etapie czyszczenia danych. SQL to cenny język, który oferuje sposoby wydajnego śledzenia i usuwania zduplikowanych wartości.
A. Używanie odrębnego słowa kluczowego
The odrębny słowo kluczowe jest prawdopodobnie najczęstszą i najczęściej używaną funkcją SQL do usuwania zduplikowanych wartości w tabeli. Możesz usunąć duplikaty z jednej kolumny, a nawet zduplikowane wiersze za jednym razem.
Oto jak usunąć duplikaty z jednej kolumny:
wybieraćodrębny ID produktu z sahil.product_dups;
Dane wyjściowe zwracają listę wszystkich unikalnych identyfikatorów produktów z tabeli.
Aby usunąć zduplikowane wiersze, możesz zmodyfikować powyższy kod w następujący sposób:
wybieraćodrębny * z sahil.product_dups;
Dane wyjściowe zwracają listę wszystkich unikalnych wierszy z tabeli. Patrząc na dane wyjściowe, można zauważyć, że identyfikatory produktów 14 i 47 pojawiają się tylko raz w tabeli wyników końcowych.
B. Korzystanie z metody wspólnego wyrażenia tabelarycznego (CTE).
Metoda Common Table Expression (CTE) różni się nieco od głównego kodu SQL. CTE są podobne do Tymczasowe tabele SQL, z tą różnicą, że są one wirtualne, do których można się odwoływać tylko podczas wykonywania zapytania.
Największą korzyścią jest to, że nie trzeba przekazywać osobnego zapytania, aby później usunąć te tabele, ponieważ przestają one istnieć, gdy tylko zapytanie zostanie wykonane. Korzystając z metody CTE, możesz użyć poniższego kodu, aby znaleźć i usunąć duplikaty.
z cteprodukty Jak
(wybierać produkt, zamówienia,
row_number() over (partycja według productid kolejność według productid) jako sno
z sahil.product_dups)
wybierać * z cteprodukty
gdzie sn = 1;
Możesz wywołać funkcję CTE za pomocą z słowo kluczowe; zdefiniuj nazwę tymczasowej tabeli wirtualnej po z słowo kluczowe. Odwołanie do tabeli CTE jest przydatne podczas filtrowania wartości tabeli.
W następnej części przypisz numery wierszy do swoich identyfikatorów produktów za pomocą Numer wiersza() funkcjonować. Ponieważ odwołujesz się do każdego identyfikatora produktu za pomocą a przegroda funkcji, każdy powtarzający się identyfikator ma odrębną wartość.
Na koniec przefiltruj nowo utworzone sno kolumnę w ostatnim segmencie z inną wybierać oświadczenie. Ustaw ten filtr na 1, aby uzyskać unikalne wartości w wyniku końcowym.
Naucz się korzystać z SQL w prosty sposób
SQL i jego warianty stały się tematem rozmów w mieście, z jego wrodzoną zdolnością do wykonywania zapytań i korzystania z relacyjnych baz danych. Od pisania prostych zapytań po przeprowadzanie skomplikowanych analiz z zapytaniami podrzędnymi, ten język ma wszystkiego po trochu.
Jednak przed napisaniem jakichkolwiek zapytań musisz doskonalić swoje umiejętności i łamać kody, aby stać się biegłym programistą. Możesz nauczyć się SQL w zabawny sposób, wdrażając swoją wiedzę w grach. Poznaj kilka fantazyjnych niuansów kodowania, dodając trochę zabawy do swojego kodu.