Dubletten sind doppelte Einträge, die Sie mit einer SQL-Abfrage in einer Tabelle finden können.
Die folgende Abfrage listet alle Dubletten auf und zeigt die Anzahl der Duplikate an:
SELECT [SPALTE], COUNT(*) AS anzahl FROM [TABELLE] GROUP BY [SPALTE] HAVING anzahl > 1Wenn Sie wissen möchten welche Datensätze doppelt sind, dann können diese einzeln aufgelistet werden.
Die folgenden SQL-Abfrage listet Ihnen die Duplikate auf:
In diesem Lernprogramm wird die Verwendung der SQL Funktion COUNT mit Syntax und Beispielen erläutert. Mit der SQL Funktion COUNT wird die Anzahl der in einer SELECT-Anweisung zurückgegebenen Zeilen gezählt. Die Syntax für die COUNT-Funktion in SQL lautet: SELECT COUNT(Aggregat_Ausdruck) Oder die Syntax für die COUNT-Funktion beim Gruppieren der Ergebnisse nach einer oder mehreren Spalten lautet: SELECT Ausdruck1, Ausdruck2, ... Ausdruck_n, Nicht jeder erkennt dies, aber die COUNT-Funktion zählt nur die Datensätze, bei denen der Ausdruck in COUNT (Ausdruck) NOT NULL ist. Wenn der Ausdruck ein NULL Wert ist, wird er nicht in die COUNT-Berechnungen einbezogen. Lassen Sie uns dies weiter untersuchen. In diesem Beispiel haben wir
eine Tabelle mit dem Namen customers mit den folgenden Daten: Geben Sie die folgende SELECT-Anweisung ein, die die COUNT-Funktion verwendet:
SELECTCOUNT(customer_id) FROMcustomers;Beschreibung
Syntax
FROM Tabellen
[WHERE Bedingungen]
[ORDER BY
Ausdruck [ ASC | DESC ]];
COUNT(Aggregat_Ausdruck)
FROM Tabellen
[WHERE Bedingungen]
GROUP BY Ausdruck1, Ausdruck2, ... Ausdruck_n
[ORDER BY Ausdruck [ ASC | DESC ]];Parameter oder Argumente
Ausdruck1, Ausdruck2, ... Ausdruck_nAusdrücke, die
nicht in der COUNT-Funktion enthalten sind und in der GROUP BY Klausel am Ende der SQL-Anweisung enthalten sein müssen.Aggregat_AusdruckDies ist die Spalte oder der Ausdruck, deren NOT NULL Werte gezählt werden.TabellenDie Tabellen, aus denen Sie Datensätze abrufen möchten. In der FROM-Klausel muss mindestens eine Tabelle aufgeführt sein.WHERE BedingungenWahlweise. Dies sind Bedingungen, die erfüllt sein
müssen, damit die Datensätze ausgewählt werden können.ORDER BY AusdruckWahlweise. Der Ausdruck, der zum Sortieren der Datensätze in der Ergebnismenge verwendet wird. Wenn mehr als ein Ausdruck angegeben wird, müssen die Werte durch Kommas getrennt werden.ASCWahlweise. ASC sortiert die Ergebnismenge in aufsteigender Reihenfolge nach Ausdruck. Dies ist das Standardverhalten, wenn es nicht angegeben wirdDESC
Wahlweise. DESC sortiert die Ergebnismenge in absteigender Reihenfolge nach Ausdruck.Beispiel - Die COUNT-Funktion enthält nur NOT NULL Werte
customer_idlast_namefirst_namefavorite_website 4000
Bieber
Justin
google.com
5000
Gomez
Selena
bing.com
6000
Kunis
Mila
yahoo.com
7000
Cruise
Tom
oracle.com
8000
Depp
Johnny
NULL
9000
Crowe
Russell
google.com
Es wird 1 Datensatz ausgewählt. Dies sind die Ergebnisse, die Sie sehen sollten:
6 |
In diesem Beispiel gibt die Abfrage 6 zurück, da die customers Tabelle 6 Datensätze enthält und alle Werte für customer_id NOT NULL sind (dh customer_id ist der Primärschlüssel für die Tabelle).
Aber was passiert, wenn wir mit der COUNT-Funktion auf einen NULL-Wert stoßen? Geben Sie die folgende SELECT-Anweisung ein, die die Spalte favorite_website zählt, die NULL Werte enthalten kann:
SELECTCOUNT(favorite_website) FROMcustomers; |
Es wird 1 Datensatz ausgewählt. Dies sind die Ergebnisse, die Sie sehen sollten:
5 |
In diesem zweiten Beispiel wird 5 zurückgegeben. Da einer der favorite_website Werte NULL ist, wird er von der COUNT-Funktionsberechnung ausgeschlossen. Infolgedessen gibt die Abfrage 5 statt 6 zurück.
TIPP: Verwenden Sie den Primärschlüssel in der COUNT-Funktion oder COUNT(*), wenn Sie sicher sein möchten, dass Datensätze in den Berechnungen nicht ausgeschlossen werden.
Beispiel - Verwenden eines einzelnen ausdrücke in der COUNT-Funktion
Schauen wir uns ein Beispiel an, das zeigt, wie die COUNT-Funktion mit einem einzelnen Ausdruck in einer Abfrage verwendet wird.
In diesem Beispiel haben wir eine Tabelle namens employees mit den folgenden Daten:
1001 | Bieber | Justin | 62000 | 500 |
1002 | Gomez | Selena | 57500 | 500 |
1003 | Kunis | Mila | 71000 | 501 |
1004 | Cruise | Tom | 42000 | 501 |
Geben Sie die folgende SQL-Anweisung ein:
SELECTCOUNT(*)AStotal FROMemployees WHEREsalary>50000; |
Es wird 1 Datensatz ausgewählt. Dies sind die Ergebnisse, die Sie sehen sollten:
3 |
In diesem Beispiel geben wir die Anzahl der Mitarbeiter zurück, deren Gehalt über 50000 US-Dollar liegt. Wir haben COUNT(*) als total angegeben, um die Lesbarkeit unserer Abfrageergebnisse zu verbessern. Jetzt wird total als Spaltenüberschrift angezeigt, wenn die Ergebnismenge zurückgegeben wird.
Beispiel - Verwenden von GROUP BY mit der COUNT-Funktion
In einigen Fällen müssen Sie die GROUP BY Klausel mit der COUNT-Funktion verwenden. Dies ist der Fall, wenn in der SELECT-Anweisung Spalten aufgeführt sind, die nicht Teil der COUNT-Funktion sind. Lassen Sie uns dies weiter untersuchen.
Verwenden Sie erneut die Tabelle employees, die die folgenden Daten enthält:
1001 | Bieber | Justin | 62000 | 500 |
1002 | Gomez | Selena | 57500 | 500 |
1003 | Kunis | Mila | 71000 | 501 |
1004 | Cruise | Tom | 42000 | 501 |
Geben Sie die folgende SQL-Anweisung ein:
SELECTdept_id,COUNT(*)AStotal FROMemployees WHEREsalary>50000 GROUP BYdept_id; |
Es werden 2 Datensätze ausgewählt. Dies sind die Ergebnisse, die Sie sehen sollten:
500 | 2 |
501 | 1 |
In diesem Beispiel gibt die COUNT-Funktion die Anzahl der employee zurück, die für jede dept_id über 50000 US-Dollar verdienen. Da die Spalte dept_id nicht in der COUNT-Funktion enthalten ist, muss sie in der GROUP BY Klausel aufgeführt sein.
Beispiel - Verwenden von DISTINCT mit der COUNT-Funktion
Wussten Sie, dass Sie die DISTINCT Klausel in der COUNT-Funktion verwenden können? Auf diese Weise können Sie nur die eindeutigen Werte zählen.
Verwenden der gleichen Tabelle employees wie im vorherigen Beispiel:
1001 | Bieber | Justin | 62000 | 500 |
1002 | Gomez | Selena | 57500 | 500 |
1003 | Kunis | Mila | 71000 | 501 |
1004 | Cruise | Tom | 42000 | 501 |
Geben Sie die folgende SQL-Anweisung ein:
SELECTCOUNT(DISTINCTdept_id)AStotal FROMemployees WHEREsalary>50000; |
Es wird 1 Datensatz ausgewählt. Dies sind die Ergebnisse, die Sie sehen sollten:
2 |
In diesem Beispiel gibt die COUNT-Funktion die eindeutige Anzahl von dept_id Werten zurück, bei denen mindestens ein employee mehr als 50.000 US-Dollar verdient.
TIPP: Leistungsoptimierung mit der COUNT-Funktion
Da die COUNT-Funktion unabhängig von den NOT NULL-Feldern, die Sie als COUNT-Funktionsparameter verwenden (dh in Klammern), dieselben Ergebnisse zurückgibt, können Sie COUNT(1) verwenden, um eine Verbesserung zu erzielen Performance. Jetzt muss das Datenbankmodul keine Datenfelder abrufen, sondern ruft nur den ganzzahligen Wert 1 ab.
Beispielsweise, anstatt diese Anweisung einzugeben:
SELECTdept_id,COUNT(*)AStotal FROMemployees WHEREsalary>50000 GROUP BYdept_id; |
Sie können COUNT(*) durch COUNT(1) ersetzen, um eine bessere Leistung zu erzielen:
SELECTdept_id,COUNT(1)AStotal FROMemployees WHEREsalary>50000 GROUP BYdept_id; |
Jetzt muss die COUNT-Funktion nicht mehr alle Felder aus der Tabelle employees abrufen, wie dies bei Verwendung der COUNT(*) Syntax der Fall war. Es wird lediglich der numerische Wert 1 für jeden Datensatz abgerufen, der Ihren Kriterien entspricht.