Sql con vs dove

Sql con vs dove
In alcuni casi, è possibile incontrare casi in cui è necessario filtrare i record da un database utilizzando la clausola Where. Ciò consente di specificare una condizione specifica e applicare solo le azioni impostate su righe che corrispondono alle condizioni.

Un altro caso d'uso tipico è quando è necessario applicare un filtro a un gruppo di record come un'unità. È qui che entra in gioco la clausola. È simile alla clausola Where ma può essere applicato a un risultato aggregato.

Qual è la differenza?

C'è solo una differenza tra dove e clausole:

  1. La clausola dove viene applicata alle singole righe in una tabella.
  2. D'altra parte, la clausola di avere viene applicata a un gruppo di righe che soddisfano la condizione specificata. Puoi anche usare la clausola di avere in una funzione aggregata.

Dove esempio di clausola

Considera la tabella dei dipendenti contenenti dati di esempio come previsto nelle dichiarazioni seguenti:

Crea dipendenti da tavolo (
Chiave primaria seriale ID,
full_name varchar (255),
Email Varchar (255),
Dipartimento Varchar (100),
Data start_date,
Bool attivo,
Categoria Varchar (50)
);
Inserisci i dipendenti (full_name, e -mail, dipartimento, start_date, attivo, categoria)
VALORI
("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', '[email protected] ',' Database Developer ',' 2016-12-23 ', True,' Dev-DB1 '),
('Barbara Moore', '[email protected] "," sviluppatore di database "," 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-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 ');

Possiamo usare la selezione con la clausola WHE WHEPT per recuperare le righe in cui la categoria è uguale a "Dev-OPS-1".

Un'espressione di esempio è come mostrato:

SELEZIONARE *
Dai dipendenti
Dove categoria = 'dev-ops1';

La query sopra viene applicata su riga per riga e restituisce il set di risultati come mostrato:

Avere un esempio di clausola

Come affermato, la clausola di avere viene applicata su aggregato. Ad esempio, considera la tabella con i dati di esempio come mostrato nella query seguente:

Crea la tabella youtube_stats (
ID seriale,
canale_id varchar (50),
video_id varchar (50),
Visualizza_count int
);
Inserisci in youtube_stats (canale_id, video_id, views_count)
VALORI
('Chan1', 'Vid1', 100000),
('Chan1', 'Vid2', 500000),
('Chan2', 'Vid1', 400000),
('Chan2', 'Vid2', 1000000),
('Chan3', 'Vid1', 800000),
('Chan4', 'Vid1', 262529);

Possiamo usare i gruppi aggregati della clausola di avere come mostrato:

Seleziona ID,
CANALE ID,
Video_id,
Sum (views_count) come total_views
Da youtube_stats
Gruppo di Channel_id
Avendo totali_views> = 100000

La query sopra dovrebbe restituire solo gli elementi in cui la somma è maggiore o uguale alla condizione sopra.