Come e quando utilizzare Gruppo di vista e distinte

HAVING Count (*)> = 2
  

Chi ha parlato di familiari a carico qui? Nessuno, è implicita. Vedete, ogni volta che si crea un gruppo, che "invisibili terza dimensione" di righe componente di tale gruppo contiene una riga per ogni elemento del gruppo. Perché si gruppo dalle colonne che si seleziona da parte della Società e le tabelle dei dipendenti, componente di una riga per ogni persona a carico è unito nella clausola FROM. Così la clausola HAVING esegue i suoi calcoli e le funzioni in merito alla "terza dimensione invisibile" di righe costituente "seduta dietro "ogni gruppo. Prendete, dunque, la seguente riga di codice:

HAVING Count (*)> = 2

Usando questo codice in una lista è come dire la seguente: Per ogni gruppo che abbia almeno due righe seduta costitutiva dietro di essa. Un altro modo per visualizzare la clausola HAVING è quello di pensare ad esso come una clausola WHERE che opera su tali righe seduta costitutiva dietro ogni gruppo.

E.LastName SELECT + ',' + e.FirstName AS EmployeeName, count (*) come NumDependantsAdded13OrOlder FROM Employee e INNER JOIN Dependant d ON e.SSN = d.SSN GROUP BY e.LastName, e.FirstName ORDER BY EmployeeName ASC

Ora è possibile aggiungere una clausola HAVING come mostrato nel codice in modo che si recuperano solo i dipendenti Dependant più giovane è stato aggiunto al database.

E.LastName SELECT + ',' + e.FirstName AS EmployeeName, count (*) come NumDependantsAdded13OrOlder FROM Employee e INNER JOIN Dependant d
ON e.SSN = d.SSN GROUP BY e.LastName, e.FirstName HAVING min (d.Age)> 13 ORDER BY EmployeeName ASC

Per mezzo di aggregazione per raccogliere più elementi in un tutto. Una funzione di aggregazione opera su un insieme di righe e restituisce un singolo valore che rappresenta l'insieme di queste righe. Per esempio, Avg (Stipendio) restituisce il salario medio delle righe selezionate dipendente, in modo Avg () è considerata una funzione di aggregazione. Le funzioni di aggregazione sono anche conosciuti come funzioni definiti perché operano su un insieme di dati. Il modo migliore per determinare quando è possibile e non è possibile utilizzare le funzioni di aggregazione è quello di ascoltare attentamente la versione in lingua inglese della questione (che è, la query) che si chiede il database. "Qual è lo stipendio medio di tutti i dipendenti nati dopo il 4 luglio 1975?" È, per esempio, un semplice, questione ben formato, in modo che si integra facilmente in un'istruzione SQL, come mostra il seguente codice:

SELECT AVG (Stipendio) FROM Impiegato WHERE DateOfBirth> '07 / 04/1975 '

Ma che dire di "Qual è il nome di ogni dipendente e lo stipendio medio di tutti i dipendenti nati dopo il 4 luglio 1975?" E 'questa una domanda valida? In realtà, ci sono due questioni separate che sono innaturalmente "smushed" insieme. La seguente query, che avrebbe tentato di rispondere a questa domanda è altrettanto innaturale e sarebbe, quindi, lanciare un messaggio di errore:

SELECT LastName + ',' + FirstName AS EmployeeName, Avg (Stipendio) FROM Impiegato WHERE DateOfBirth> '07 / 04/1975 '

Come si può recuperare sia i singoli dipendenti e la media di tutti i dipendenti, come un unico risultato query set? Non si può! Si tratta di due diversi insiemi di dati con due dimensioni completamente diverse, e uno non ha assolutamente niente a che fare con l'altra. Il fatto che entrambe le domande sono circa Lavoratori non fa alcuna differenza. Come fanno tutte le funzioni, la funzione AVG () restituisce un valore unico, in questo caso, la media dei valori nella colonna Salario per l'insieme dei dati descritto dalla clausola WHERE . Questo è un valore, nel senso che sembra esattamente una volta nel risultato finale della query. In altre parole, essa ha una dimensione di una riga da una colonna. D'altra parte, si consideri la colonna definita dal codice seguente:

LastName + ',' + FirstName AS EmployeeName

EmployeeName non è una funzione, né operare in una serie di dati. Come ci si aspetterebbe, la definizione di query colonna restituisce un valore per ogni riga dei dati descritto dalla clausola WHERE. In altre parole, essa ha una dimensione di N righe da una colonna. Chiaramente, la funzione di mediazione non può coesistere con la visualizzazione delle colonne nella stessa istruzione SQL perché sono di diverse dimensioni. Le stesse regole di funzionamento per tenere tutte le funzioni di aggregazione, come Min (), Max (), Sum (), e così via. Se GROUP BY è presente in un'istruzione SQL, la serie di dati su cui opera una funzione di modifiche rispetto a quello intero set di dati descritto dalla dichiarazione per ogni set di righe separate seduta costitutiva dietro ogni gruppo. Capisci perché che la visualizzazione è così utile? Dimostrando che dimensione invisibile terza, ora è possibile visualizzare il risultato di un set di funzioni per ogni serie o di un gruppo di righe nel set di risultati. Se si desidera trovare l'età media in cui il a carico di ciascun dipendente sono state registrate nella banca dati, per esempio, si esegue la query seguente:

SELECT e.LastName + ',' + e.FirstName AS EmployeeName, Avg (d.Age) come AverageAge FROM Employee e INNER JOIN Dependant d ON e.SSN = d.SSN GROUP BY e.LastName, e.FirstName

E il risultato sarebbe il seguente:

EmployeeName AverageAge Churvis, Adam Davidow 55, Allen 30 Silverberg, Betania 15 Sanders, Billy 10
Thor, Dirk NULL Rodriguez, Kiki 17 Lester, Lance 1 Romanova, Natasha 38 Kayashunu, Oksal 10 Kokilas, Susan 2 Williger, Timmy 38 Haymen, Turk 16 Feuilliette, Valerie 59

un articolo presentato da Daniel Carlson


Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni.
Importante: Questo articolo "Come e quando utilizzare Gruppo di vista e distinto" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.


Online: 448 users browsing the articles directory