MySQL mit Nutzungsanalyse

MySQL mit Nutzungsanalyse

Verwendung von „haben“

Mit der Having-Klausel können wir verschiedene Daten nach der Gruppierung filtern, und die Where-Klausel filtert Datensätze vor der Aggregation, das heißt, sie agiert vor den Group By- und Having-Klauseln. Die Having-Klausel filtert die Gruppendatensätze nach der Aggregation.

SQL-Beispiel:

1. Zeigen Sie die Gesamtbevölkerung und die Gesamtfläche jeder Region an.

SELECT Region, SUM(Bevölkerung), SUM(Fläche) FROM bbc GROUP BY Region

Verwenden Sie zunächst „Region“, um die zurückgegebenen Datensätze in mehrere Gruppen aufzuteilen. Dies ist die wörtliche Bedeutung von GROUP BY. Nachdem die Gruppen gebildet wurden, werden Aggregatfunktionen verwendet, um verschiedene Felder in jeder Gruppe (ein oder mehrere Datensätze) zu bearbeiten.

2. Zeigen Sie die Gesamtbevölkerung und die Gesamtfläche jeder Region an. Es werden nur Regionen mit einer Fläche von über 1.000.000 angezeigt.

SELECT Region, SUM(Bevölkerung), SUM(Fläche)
VON BBC
GROUP BY-Region
HABEN SUM(Bereich)>1000000

Hier können wir „where“ nicht verwenden, um Regionen mit mehr als 1.000.000 zu filtern, da ein solcher Datensatz in der Tabelle nicht vorhanden ist.

Im Gegenteil, die Having-Klausel ermöglicht es uns, die Datengruppen nach der Gruppierung zu filtern

MySQL bestimmt die Länge eines Feldes:

Wählen Sie die Homepage aus der AAA-Tabelle, wobei char_length(trim(home_page))<10 und char_length(trim(home_page))>1 ist.

Unterschied zwischen Where- und Having-Klauseln in MySQL

Die where- und having-Klauseln in MySQL können beide Datensätze filtern, es gibt jedoch einige Unterschiede in ihrer Verwendung. Sehen wir uns ein Beispiel an:

Verwenden Sie die Klauseln „group by“ und „having“, um die eindeutigen Datensätze zu ermitteln. Das SQL lautet wie folgt:

Wählen Sie uid, email, count(*) als ct aus `edm_user081217` GROUP BY email

Dann schau dir das an, es ist leicht zu verstehen

Wählen Sie uid, E-Mail, Anzahl (*) als ct aus „edm_user081217“. GRUPPE NACH E-Mail mit ct > 1

Gruppieren Sie die E-Mails zunächst mit „Group By“ und filtern Sie dann diejenigen mit einem Wert größer als 1 heraus, sodass nur doppelte Datensätze gefunden werden.

Im Folgenden sind die Unterschiede zwischen „having“ und „where“ aufgeführt:

WÄHLEN Sie Stadt FROM Wetter, WO temp_lo = (WÄHLEN Sie max(temp_lo) FROM Wetter);

Die Handlungsgegenstände sind unterschiedlich. Die WHERE-Klausel gilt für Tabellen und Ansichten und die HAVING-Klausel gilt für Gruppen.

WHERE wählt Eingabezeilen vor der Gruppierung und Aggregation aus (und steuert somit, welche Zeilen in die Aggregatberechnung eingehen), während HAVING gruppierte Zeilen nach der Gruppierung und Aggregation auswählt. Daher kann die WHERE-Klausel keine Aggregatfunktionen enthalten. Es ist nicht sinnvoll, zu versuchen, mithilfe von Aggregatfunktionen zu bestimmen, welche Zeilen in die Aggregatoperation eingegeben werden sollen. Im Gegensatz dazu enthält die HAVING-Klausel immer Aggregatfunktionen. (Genau genommen können Sie eine HAVING-Klausel ohne Verwendung von Aggregaten schreiben, aber das wäre Zeitverschwendung. Dieselbe Bedingung kann in der WHERE-Phase effizienter verwendet werden.)

Im vorherigen Beispiel können wir die Städtenamenbeschränkung im WHERE anwenden, da keine Aggregation erforderlich ist. Dies ist effizienter als das Hinzufügen einer Einschränkung in HAVING, da wir Gruppierungs- und Aggregationsberechnungen für Zeilen vermeiden, die die WHERE-Prüfung nicht bestehen.

Zusammenfassend:

„Having“ folgt normalerweise auf „Group by“ und funktioniert als Teil der Datensatzgruppenauswahl.

Wobei ausgeführt wird, um mit allen Daten zu arbeiten.

Darüber hinaus können Aggregatfunktionen verwendet werden, z. B. sum(qty)>1000

Zusammenfassen

Oben ist die vom Herausgeber eingeführte Analyse der Verwendung von MySQL. Ich hoffe, sie ist für alle hilfreich. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • Eine kurze Erläuterung der Verwendung von „using“ in MySQL-Datenbanken
  • Mysql EXPLAIN zeigt die Verwendung von Filesort Einführung
  • Hinweise zur Verwendung von „Group By“ und „Having Together“ in MySQL
  • Anweisungen zur Verwendung der Having-Klausel in MySql zum Filtern von Gruppendatensätzen
  • Detaillierte Analyse der Unterschiede zwischen „order by“, „group by“ und „having“ in MySQL
  • Untersuchung des Problems der direkten Verwendung der HAVING-Anweisung ohne GROUP BY in MySQL
  • Analyse des Problems, dass MySQL leer zurückgibt, wenn HAVING direkt ohne GROUP BY ausgeführt wird
  • MySQL-Gruppe mit Beispielcode
  • Eine kurze Analyse der Verwendung von USING und HAVING in MySQL

<<:  So erkennen Sie die Ubuntu-Version mithilfe der Befehlszeile

>>:  Verwendung von Umgebungsvariablen in Docker und Lösungen für häufige Probleme

Artikel empfehlen

CSS realisiert die Layoutmethode „Fest links“ und „Adaptiv rechts“

1. Schwebendes Layout 1. Lassen Sie zuerst das Di...

Einführung und Verwendung von Triggern und Cursorn in MySQL

Trigger-Einführung Ein Trigger ist eine spezielle...

Drei Verwendungszwecke und Unterschiede von MySQL sind nicht gleich

Urteilssymbole werden in MySQL häufig verwendet, ...

Details zur zugrundeliegenden Datenstruktur von MySQL-Indizes

Inhaltsverzeichnis 1. Indextyp 1. B+ Baum 2. Was ...

WML-Tag-Zusammenfassung

Strukturbezogene Tags ----------------------------...

Detaillierte Erklärung zum Schreiben mehrerer Bedingungen von CSS: nicht

Der Pseudoklassenselektor :not kann Elemente filt...

Zusammenfassung der neuen Verwendung von vi (vim) unter Linux

Ich benutze den vi-Editor seit mehreren Jahren, h...

Implementierung des Docker View Container Log-Befehls

Warum sollten wir das Protokoll lesen? Wenn beisp...