Wie finden Sie heraus, 2. höchste Gehalt des Mitarbeiters mit postgresql query
Erstellte Tabelle, die als Namen geosalary mit den Spalten name,id,Gehalt;
name id salary
patrik 2 1000
frank 2 2000
chinmon 3 1300
paddy 3 1700
ich habe versucht, diesen code unten finden Sie 2. höchste Gehalt
SELECT salary FROM (SELECT salary ,DENSE_RANK() OVER(ORDER BY SALARY) AS DENSE_RANK FROM geosalary) WHERE DENSE_RANK=2;
jedoch immer die folgende Fehlermeldung angezeigt,
*** Fehler ***
ERROR: subquery in FROM must have an alias
SQL state: 42601
Hint: For example, FROM (SELECT ...) [AS] foo.
Character: 24
mich freundlich darauf hin, wenn irgend etwas falsch an meinem code
- SELECT Gehalt FROM (SELECT salary ,DENSE_RANK() und DENSE_RANK OVER(ORDER BY SALARY) ALS DENSE_RANK VON geosalary) als dontcare WO DENSE_RANK=2;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, die Fehlermeldung ist ziemlich eindeutig: Ihre sub-select muss ein alias.
Dieser Abfrage erhalten Sie die 3. höchste Gehalt in der einzelnen Abteilung. Wenn Sie wollen, unabhängig von der Abteilung, dann entfernen Sie einfach PARTITION BY department_id
Ihre SQL-engine kennt es nicht, das "Gehalt" Spalte die Tabelle, die Sie verwenden, das ist, warum Sie benötigen, um einen alias zu verwenden, um eine Unterscheidung der beiden Spalten.
Versuchen Sie dies:
Die Fehlermeldung ist ziemlich offensichtlich: Sie müssen liefern", einem alias für die Unterabfrage.
Hier ist eine einfachere /schnellere alternative:
Im Falle von Duplikaten in Spalte Gehalt unter Abfrage das richtige Ergebnis:
Hier ist SQL standard
Zu berechnen, die N-te höchste Gehalt ändern Sie den offset Wert