2017-07-27 3 views
-1

Die folgende Abfrage:SQL-Abfrage in Bezug auf höchste Gehalt zu finden

SELECT ROW_NUMBER() OVER(ORDER BY sum(salary) DESC) as num,id, sum(salary) as salary 
FROM person 
GROUP BY id 
where num=3; 

ist mir ein Fehler bei where Zustand geben und ich möchte Zeile 3 Daten bekommen ... Was ist die Lösung für dieses sein würde?

+0

WHERE-Filter vor der Aggregation, Sie müssen die die Ergebnisse nach dem Filter Anhäufung. –

Antwort

0

Sie benötigen eine Unterabfrage:

select p.* 
from (select ROW_NUMBER() OVER (ORDER BY sum(salary) DESC) as num, id, 
      sum(salary) as salary 
     from person 
     group by id 
    ) p 
where num = 3; 

(Na ja, es sei denn, Sie Teradata verwenden und die qualify Klausel verwenden können.)

Verwandte Themen