SQL ma vs gdzie

SQL ma vs gdzie
W niektórych przypadkach możesz napotkać przypadki, w których musisz filtrować rekordy z bazy danych za pomocą klauzuli Where. Pozwala to określić określony warunek i zastosować tylko akcje ustawione do wierszy, które pasują do warunków.

Innym typowym przypadkiem użycia jest to, że musisz zastosować filtr do grupy rekordów jako jedna jednostka. W tym miejscu pojawia się klauzula posiadająca. Jest podobny do klauzuli Where, ale może być zastosowany do wyniku zagregowanego.

Jaka jest różnica?

Jest tylko jedna różnica między tym, gdzie a klauzulami:

  1. Klauzula, w której stosuje się do poszczególnych wierszy w tabeli.
  2. Z drugiej strony klauzula posiadana jest do grupy wierszy, które spełniają określony warunek. Możesz także użyć klauzuli posiadania w funkcji łącznej.

Gdzie przykład klauzuli

Rozważ tabelę pracowników zawierających przykładowe dane, jak przedstawiono w poniższych oświadczeniach:

Utwórz pracowników tabeli (
ID szeregowy klucz podstawowy,
Full_name Varchar (255),
e -mail varchar (255),
Departament Varchar (100),
data start_date,
Aktywny bool,
kategoria varchar (50)
);
Wstaw do pracowników (Full_name, e -mail, dział, start_date, aktywny, kategoria)
Wartości
(„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”, True, „Dev-G1”),
(„Wilson Smitty”, „Smitty_wilson@przykład.net ', „baza danych programista”, „2016-12-23”, true, „dev-db1”),
(„Barbara Moore”, „[email protected] „,„ Dewabase Developer ”,„ 2015-12-23 ”, true,„ dev-db1 ”),
(„Raj Chan”, „[email protected] ', „Database Developer”, „2017-12-23”, false, „dev-db1”),
(„Susan Brown”, „[email protected] ', „DevOps Engineer”, „2011-12-23”, true, „dev-ups1”),
(„Marial Anderson”, „Anderson@przykład.Org ', „DevOps Engineer”, „2015-12-23”, true, „dev-ups1”),
(„Nancy Thomas”, „[email protected] ', „DevOps Engineer”, „2014-12-23”, false, „dev-ups1”);

Możemy użyć wybierz z klauzulą ​​Where, aby pobrać wiersze, w których kategoria jest równa „Dev-OPS-1”.

Przykładowym wyrażeniem jest jak pokazano:

WYBIERAĆ *
Od pracowników
Gdzie kategoria = „dev-ups1”;

Powyższe zapytanie jest stosowane na podstawie rządu na rząd i zwraca zestaw wyników, jak pokazano:

Posiadanie przykładu klauzuli

Jak wspomniano, klauzula posiadana jest na kruszywa. Na przykład rozważ tabelę z przykładowymi danymi, jak pokazano w zapytaniu poniżej:

Utwórz tabelę youtube_stats (
ID Serial,
Channel_id varchar (50),
video_id varchar (50),
views_count int
);
Wstaw do youtube_stats (channel_id, video_id, views_count)
Wartości
(„Chan1”, „vid1”, 100000),
(„Chan1”, „vid2”, 500000),
(„Chan2”, „vid1”, 400000),
(„Chan2”, „vid2”, 1000000),
(„Chan3”, „vid1”, 800000),
(„Chan4”, „vid1”, 262529);

Możemy użyć klauzuli agregatowych, jak pokazano:

Wybierz ID,
ID KANAŁU,
Video_id,
Sum (views_count) jako total_views
Z youtube_stats
Grupa przez kanał_d
Posiadanie Total_Views> = 100000

Powyższe zapytanie powinno zwrócić tylko elementy, w których suma jest większa lub równa powyższemu warunku.