2016-06-01 6 views
-1

Für eine Employee Tabelle mit Spalt EmpId, Name, Salary ist es möglich, eine SQL-Abfrage zu schreiben, so dass das Ergebnis der Namen jeden Mitarbeiters enthält und das durchschnittliche Gehalt aller Mitarbeiter?SQL-Abfrage zu holen Mitarbeiternamen und durchschnittlichen Gehalt

Beispieldaten

EmpId  Name  Salary 
1   Alice  12000 
2   Bob   12000 
3   Charlie  10000 
4   Doug   6000 

Ich brauche eine Abfrage, die dieses Ergebnis zurückkehren würde:

Ergebnis

Name  AvgSalary 
Alice  10000 
Bob  10000 
Charlie 10000 
Doug  10000 

Hier 10000 ist durchschnittliche Gehalt der alle vier Mitarbeiter.

+2

Bitte teilen Sie, was Sie bisher versucht haben. –

+1

Das ist albern. Führen Sie eine Abfrage aus, die das Durchschnittsgehalt für alle Mitarbeiter berechnet. Dann können Sie einfach SELECT Name, 10000 als AvgSalary FROM Whatever auswählen. Es macht keinen Sinn, weil es nicht das Durchschnittsgehalt dieses Angestellten ist. –

Antwort

2

So erhalten Sie nur den Durchschnitt aller Gehälter zusammen mit der Liste aller Mitarbeiter. Sie müssen nicht jedes Mal berechnen, und das wäre wirklich verschwenderisch sein, dies zu tun, aber man konnte dies nur tun:

SELECT Name, (SELECT AVG(Salary) FROM SampleData) AS AvgSalary 
FROM SampleData 

Andernfalls könnten Sie nur einmal das durchschnittliche Gehalt bekommen:

DECLARE @AVGSALARY float 
SET @AVGSALARY = (SELECT AVG(Salary) FROM SampleData) 

SELECT Name, @AvgSalary AS AvgSalary 
FROM SampleData 
3

Sie könnten eine Fensterfunktion für diesen Einsatz, aber die Unterabfrage in der SELECT sollte schneller sein:

SELECT name, avg(salary) OVER() as avgSal FROM SampleData; 
+0

Sie können einfach sagen "over()' – shawnt00

+0

"Over" Ich wusste das nicht. Hinterhältig! Danke :) – JNevill

0
select distinct name, average from sampledata 
cross join 
(select avg(salary) average from sampledata) a1 
0
SELECT Name, AVG(Salary) 
FROM SampleData 
GROUP BY Name 
+0

Dies ist nicht der Durchschnitt aller Mitarbeiter. Dies ist der Durchschnitt für jeden einzelnen Mitarbeiter. – JNevill

+0

Gruppe von wird einen eindeutigen Angestelltennamen holen – mpatel

+0

Ja. Ja, es wird. Und Avg (Gehalt) wird das durchschnittliche Gehalt eines einzelnen Mitarbeiters zurückgeben. Was nicht gefragt wurde. OP fragte nach dem Durchschnitt aller Gehälter des Mitarbeiters. – JNevill

Verwandte Themen