/ / Qual è la sequenza di esecuzione della clausola Group By, Being e Where in SQL Server? - sql, sql-server, sql-server-2005

Qual è la sequenza di esecuzione delle clausole Group By, Having e Where in SQL Server? - sql, sql-server, sql-server-2005

Sono solo confuso con la sequenza di esecuzione di una query SQL quando utilizziamo GROUP BY e HAVING con una clausola WHERE. Quale viene eseguito per primo? Qual è la sequenza?

risposte:

136 per risposta № 1

In ordine:

A PARTIRE DAL & ADERIREs determina e filtra le righe
DOVE più filtri sulle righe
RAGGRUPPA PER combina queste righe in gruppi
VISTA gruppi di filtri
ORDINATO DA organizza le restanti righe / gruppi
LIMITE filtri sulle restanti righe / gruppi


7 per risposta № 2

DOVE è il primo, poi GRUPPI il risultato delquery e, ultimo ma non meno importante, viene utilizzata la clausola HAVING per filtrare il risultato raggruppato. Questo è l'ordine "logico", non so come questo sia tecnicamente implementato nel motore.


4 per risposta № 3

Ecco la sequenza completa per SQL Server:

1.  FROM
2.  ON
3.  JOIN
4.  WHERE
5.  GROUP BY
6.  WITH CUBE or WITH ROLLUP
7.  HAVING
8.  SELECT
9.  DISTINCT
10. ORDER BY
11. TOP

Quindi dall'elenco sopra, puoi facilmente capire la sequenza di esecuzione di GROUP BY, HAVING and WHERE che è :

1.  WHERE
2.  GROUP BY
3.  HAVING

Ottieni maggiori informazioni al riguardo da Microsoft


2 per risposta № 4

Penso che sia implementato nel motore come ha detto Matthias: DOVE, GROUP BY, HAVING

Stavo cercando di trovare un riferimento online che elenchil'intera sequenza (ovvero "SELEZIONA" arriva in fondo), ma non riesco a trovarla. È stata dettagliata in un libro "Inside Microsoft SQL Server 2005" che ho letto non molto tempo fa, da Solid Quality Learning

Modificare: Trovato un link: http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx


1 per risposta № 5

Pensa a cosa devi fare se desideri implementare:

  • DOVE: È necessario eseguire le operazioni JOIN.
  • RAGGRUPPA PER: Si specifica Raggruppa per "raggruppare" i risultati sul join, quindi deve dopo l'operazione JOIN, dopo l'utilizzo WHERE.
  • VISTA: HAVING serve per filtrare come dicono le espressioni GROUP BY. Quindi, viene eseguito dopo GROUP BY.

L'ordine è DOVE, GROUP BY e HAVING.


1 per risposta № 6

Nell'ordine seguente

  1. DA & UNISCITI
  2. DOVE
  3. RAGGRUPPA PER
  4. VISTA
  5. SELEZIONARE
  6. ORDINATO DA
  7. LIMITE

1 per risposta № 7

In Oracle 12c, puoi eseguire il codice sia in una delle seguenti sequenze:

Where
Group By
Having

O

Where
Having
Group by

-3 per risposta № 8

SELEZIONARE
A PARTIRE DAL
join
DOVE
Raggruppare per
VISTA
ORDINATO DA