Zusammenfassung der SQL-Deduplizierungsmethoden

Zusammenfassung der SQL-Deduplizierungsmethoden

Wenn wir SQL zum Extrahieren von Daten verwenden, stoßen wir häufig auf doppelte Werte in der Tabelle. Wenn wir beispielsweise UV (eindeutige Besucher) abrufen möchten, müssen wir Duplikate entfernen.

In MySQL wird normalerweise distinct oder group by verwendet, aber in SQLs, die Fensterfunktionen unterstützen (wie Hive SQL , Oracle usw.), kann zur Deduplizierung auch die Fensterfunktion ROW_NUMBER verwendet werden.

Beispielsweise gibt es eine Tabellenaufgabe wie diese:

Bemerkung:

  • task_id : Aufgaben-ID;
  • order_id : Bestell-ID;
  • start_time : Startzeit

Hinweis : Eine Aufgabe entspricht mehreren Aufträgen

Wir müssen die Gesamtzahl der Aufgaben ermitteln. Da die Task-ID nicht eindeutig ist, müssen wir Duplikate entfernen:

unterscheidbar

 -- Alle eindeutigen Werte der Task-ID auflisten (nach Deduplizierung)

Wählen Sie eine eindeutige Task-ID aus
von der Aufgabe;

--Gesamtzahl der Aufgaben, wählen Sie Anzahl (eindeutige Task-ID) Task-Nummer
von der Aufgabe;


distinct ist normalerweise weniger effizient. Es ist nicht zum Anzeigen bestimmter Werte nach der Deduplizierung geeignet und wird im Allgemeinen zusammen mit count verwendet, um die Anzahl der Einträge zu berechnen.
Wenn distinct verwendet wird, wird es nach select platziert, um die Werte aller nachfolgenden Felder zu deduplizieren. Wenn beispielsweise nach distinct zwei Felder folgen, handelt es sich bei den beiden Datensätzen 1,1 und 1,2 nicht um doppelte Werte.

Gruppieren nach

 -- Alle eindeutigen Werte der Task-ID auflisten (nach der Deduplizierung ist null auch ein Wert)
-- Task-ID auswählen
-- von Task
-- Gruppieren nach Task-ID;

--Gesamtzahl der Aufgaben, wählen Sie Anzahl (Aufgaben-ID) Aufgabennummer
von (Task-ID auswählen)
   von Aufgabe
   Gruppieren nach Task-ID) tmp;

Zeilennummer

row_number ist eine Fensterfunktion mit der folgenden Syntax:

row_number() over (partition by <用于分組的字段名> order by <用于組內排序的字段名>)
partition by kann entfallen.

 - Verwenden Sie select count(case when rn=1 then task_id else null end) task_num in SQL, das Fensterfunktionen unterstützt
von (Task-ID auswählen)
    , row_number() über (Partition nach Task-ID, Sortierung nach Startzeit) rn
  von Task) tmp;

Lassen Sie uns außerdem anhand eines Tabellentests die Verwendung von „distinct“ und „group by“ bei der Deduplizierung erklären:

 -- Das Semikolon unten wird verwendet, um Zeilen zu trennen. Wählen Sie eine eindeutige Benutzer-ID aus.
von Test; -- gibt 1; 2 zurück

Wählen Sie eindeutige Benutzer-ID und Benutzertyp aus
von Test; – gibt 1, 1; 1, 2; 2, 1 zurück

Wählen Sie Benutzer-ID aus
von Test
Gruppieren nach Benutzer-ID; -- gibt 1; 2 zurück

Wählen Sie Benutzer-ID und Benutzertyp aus.
von Test
Gruppieren nach Benutzer-ID, Benutzertyp; – gibt 1, 1; 1, 2; 2, 1 zurück

Wählen Sie Benutzer-ID und Benutzertyp aus.
von Test
Gruppieren nach Benutzer-ID; 
  -- Hive, Oracle usw. melden einen Fehler, aber MySQL kann so geschrieben werden.
– Gibt 1, 1 oder 1, 2; 2, 1 (insgesamt zwei Zeilen) zurück. Nur die Felder nach group by werden dedupliziert, d. h. die Anzahl der am Ende zurückgegebenen Datensätze entspricht der Anzahl der Datensätze in der vorherigen SQL-Anweisung, also 2 Datensätze. Für Felder, die nicht nach group by, sondern in select platziert werden, wird nur ein Datensatz zurückgegeben (normalerweise der erste, aber es sollte kein Muster vorhanden sein).

Dies ist das Ende dieses Artikels mit der Zusammenfassung der SQL-Deduplizierungsmethoden. Weitere relevante SQL-Deduplizierungsmethoden finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Zusammenfassung der drei Deduplizierungsmethoden in SQL
  • Detailliertes Beispiel zur Verwendung der distinct-Methode in MySQL
  • So optimieren Sie den MySQL-Deduplizierungsvorgang maximal
  • Eine einfache Methode zum Zusammenführen und Entfernen doppelter MySQL-Tabellen
  • MySQL-Deduplizierungsmethoden
  • Detaillierte Erklärung zweier Methoden zur Deduplizierung in MySQL und Beispielcode
  • SQL-Lernhinweise 5: So entfernen Sie Duplikate und weisen neu hinzugefügten Feldern Werte zu

<<:  Teilen Sie 10 der neuesten Web-Frontend-Frameworks (Übersetzung)

>>:  Beispielcode für reines CSS zum Erzielen eines Popup-Popup-Effekts beim Hovern von Bildern

Artikel empfehlen

Auszeichnungssprache - Anker

Zurück: Markup Language - Phrasenelemente Original...

C# implementiert MySQL-Befehlszeilensicherung und -wiederherstellung

Es gibt viele Tools zum Sichern von MySQL-Datenba...

Grundsätze und Nutzungsdetails für MySQL 8.0-Benutzer- und Rollenverwaltung

Dieser Artikel beschreibt die Benutzer- und Rolle...

Detaillierte Erläuterung des Vuex-Gesamtfalls

Inhaltsverzeichnis 1. Einleitung 2. Vorteile 3. N...

So beheben Sie den abnormalen Fehler ERROR: 2002 in MySQL

Kürzlich ist beim Starten von MySQL ein Fehler au...

Eine vorläufige Studie zum Vue-Unit-Testing

Inhaltsverzeichnis Vorwort Warum Unit-Tests einfü...

Vue implementiert die Frage-Antwort-Funktion

1. Schnittstelle für die Anforderung einer Antwor...

Beispiel, wie nginx dynamische und statische Trennung implementiert

Inhaltsverzeichnis Stellen Sie nginx auf Server1 ...

MySQL-Datenbank löscht doppelte Daten und behält nur eine Methodeninstanz bei

1. Problemeinführung Nehmen Sie ein Szenario an, ...

Detaillierter Prozess für den Einstieg mit Docker Compose HelloWorld

Voraussetzungen Compose ist ein Tool zum Orchestr...

So veröffentlichen Sie ein lokal erstelltes Docker-Image auf Dockerhub

Heute zeigen wir Ihnen, wie Sie das lokale Docker...

5 Möglichkeiten, Ihre JavaScript-Codebasis sauberer zu machen

Inhaltsverzeichnis 1. Verwenden Sie Standardparam...

So erstellen Sie MySQL-Indizes richtig

Die Indizierung ähnelt dem Erstellen bibliografis...

Praxis der Verwendung von Vite2+Vue3 zum Rendern von Markdown-Dokumenten

Inhaltsverzeichnis Benutzerdefinierte Vite-Plugin...