Sql mit vs wo

Sql mit vs wo
In einigen Fällen können Sie Fälle begegnen, in denen Sie Datensätze aus einer Datenbank mit der WHERE -Klausel filtern müssen. Auf diese Weise können Sie eine bestimmte Bedingung angeben und nur die festgelegten Aktionen auf Zeilen anwenden, die den Bedingungen entsprechen.

Ein weiterer typischer Anwendungsfall ist, wenn Sie einen Filter als eine Einheit auf eine Gruppe von Datensätzen anwenden müssen. Hier kommt die Klausel ins Spiel. Es ähnelt der Where -Klausel, kann aber auf ein aggregiertes Ergebnis angewendet werden.

Was ist der Unterschied?

Es gibt nur einen Unterschied zwischen dem wo und mit Klauseln:

  1. Die WHERE -Klausel wird auf einzelne Reihen in einer Tabelle angewendet.
  2. Andererseits wird die Klausel auf eine Gruppe von Zeilen angewendet, die dem angegebenen Zustand entsprechen. Sie können auch die Klausel in einer Gesamtfunktion verwenden.

Wo Klausel Beispiel

Betrachten Sie die Tabelle der Mitarbeiter, die Beispieldaten enthält, wie in den folgenden Aussagen angegeben:

Erstellen von Tabellenmitarbeitern (
id serielle Primärschlüssel,
full_name varchar (255),
E -Mail Varchar (255),
Abteilungsvarchar (100),
start_date Datum,
aktiver Bool,
Kategorie varchar (50)
);
In Mitarbeiter einfügen (Full_Name, E -Mail, Abteilung, start_date, aktiv, Kategorie)
WERTE
('Meghan Edwards', [email protected] ',' Game Development ', 2016-06-22', True, 'Dev-G1'),
('Sam Davis', '[email protected] ',' Game Development ',' 2014-01-04 ', False,' Dev-G1 '),
('Taylor Miller', '[email protected] ',' Game Development ',' 2019-10-06 ', wahr,' dev-g1 '),
('Wilson Smitty', '[email protected] ',' Datenbankentwickler ',' 2016-12-23 ', True,' Dev-DB1 '),
('Barbara Moore', '[email protected] "," Datenbankentwickler "," 2015-12-23 ", true," dev-db1 "),
('Raj Chan', '[email protected] ',' Datenbankentwickler ',' 2017-12-23 ', False,' Dev-DB1 '),
('Susan Brown', '[email protected] ',' DevOps Engineer ',' 2011-12-23 ', True,' Dev-Ops1 '),
('Marial Anderson', [email protected] ',' DevOps Engineer ',' 2015-12-23 ', True,' Dev-Ops1 '),
('Nancy Thomas', '[email protected] ',' DevOps Engineer ',' 2014-12-23 ', False,' dev-ops1 ');

Wir können die Auswahl mit der Where-Klausel verwenden, um die Zeilen abzurufen, in denen die Kategorie "dev-ops-1" entspricht.

Ein Beispielausdruck ist wie gezeigt:

WÄHLEN *
Von Mitarbeitern
Wo category = 'dev-ops1';

Die obige Abfrage wird auf einer Zeile pro Zeilenbasis angewendet und gibt den Ergebnisse der Ergebnisse wie gezeigt zurück:

Klausel Beispiel

Wie bereits erwähnt, wird die Klausel in Aggregat angewendet. Betrachten Sie beispielsweise die Tabelle mit Beispieldaten, wie in der folgenden Abfrage gezeigt:

Erstellen Sie Tabelle youtube_stats (
id seriell,
Channel_id Varchar (50),
Video_id Varchar (50),
Views_Count int
);
In youtube_stats einfügen (Channel_id, Video_ID, Views_Count)
WERTE
('Chan1', 'Vid1', 100000),
('Chan1', 'VID2', 500000),
('Chan2', 'Vid1', 400000),
('Chan2', 'Vid2', 1000000),
('Chan3', 'Vid1', 800000),
('Chan4', 'Vid1', 262529);

Wir können wie gezeigt die Gruppen mit Klausel -Aggregatgruppen verwenden:

ID auswählen,
KANAL ID,
Video_id,
Sum (Views_count) als Total_Views
Von youtube_stats
Gruppe von Channel_id
Total_views> = 100000 haben

Die obige Abfrage sollte nur die Elemente zurückgeben, bei denen die Summe größer oder gleich der obigen Bedingung ist.