2011-11-02 10 views
12
SELECT Departamentos.Nome_Dep, 
     Funcionarios.Nome AS Funcionario, 
     Funcionarios.Salario, 
     AVG(Funcionarios.Salario) OVER(PARTITION BY Departamentos.Nome_Dep) "Média por Departamento" 
     Salario - AVG(Funcionarios.Salario) OVER(PARTITION BY Departamentos.Nome_Dep) "Diferença de Salário" FROM Funcionarios 
INNER JOIN Departamentos 
    ON Funcionarios.ID_Dep = Departamentos.ID 
ORDER BY 5 DESC 

L'ordine di 5 mi sta buttando fuori. Non mi è mai piaciuto niente. Ordina per [nome_ununome] sì, ma ordina per [numero], mai visto prima. L'ho estratto da un articolo.Cosa significa ORDER BY 5 DESC?

Nota: questo è T-SQL.

Fonte: Window Functions in SQL Server 2005, 2008, 2012

+3

NOte che questo normalmente non è una buona pratica poichè qualcuno potrebbe facilmente aggiungere una colonna e modificare l'ordine senza accorgersene, ho il sospetto che sia fatto in questo caso però perché la colonna 5 è calcolata e non volevano andare a il problema di ripetere la calulazione nell'ordine. A proposito c'è una virgola mancante tra le colonne 4 e 5 – HLGEM

risposta

22

Questo ordine da parte del 5 ° campo in questo SELECT

+0

Eccellente. Grazie. L'ho visto immediatamente nell'articolo dopo aver visto la tua risposta. Grazie. – dotnetN00b

4

dell'Ordine da parte del 5 ° colonna nel set di risultati.

4

Ordina per quinta colonna nel set di risultati discendente.

0

Ordina per 5 ° campo nel set di risultati.

0

È il ORDINAMENTO PER POSIZIONE RELATIVA.

È possibile utilizzare la clausola SQL ORDER BY per ordinare per posizione relativa nel set di risultati, in cui il primo campo nel set di risultati è 1. Il campo successivo è 2 e così via. Qui in questo caso Ordina per il quinto campo nel set di risultati.

Passare attraverso http://www.techonthenet.com/sql/order_by.php su sql ordina per.