2016-04-10 15 views
2

Aufgabe: Liste Name und Gehalt des höchsten und niedrigsten bezahlten Mitarbeiters aus jeder Abteilung. Sie können die Abfragen für höchste und niedrigste auch separat durchführen.Abfragevereinfachung durch Verwendung der Oracle-Beispieldatenbank

Versuchte Abfrage:

SELECT dept.deptno, 
     dname, 
     minsal, 
     maxsal 
FROM dept, 
     (SELECT deptno, 
       Max (sal) MAXSAL 
     FROM emp 
     GROUP BY deptno) MAXSALARY, 
     (SELECT deptno, 
       Min (sal)MINSAL 
     FROM emp 
     GROUP BY deptno) MINSALARY 
WHERE MAXSALARY.deptno = dept.deptno 
     AND MINSALARY.deptno = dept.deptno; 

Ergebnis

enter image description here

Das Ergebnis ist korrekt.

Frage) Gibt es eine andere Möglichkeit, die Abfrage zu vereinfachen?

Antwort

2

können Sie ORACLE verwenden Fensterfunktionen wie row_number mit bedingter Aggregation kombiniert CASE EXPRESSION mit:

SELECT t.ename,t.dname, 
     MAX(CASE WHEN t.low_ind = 1 then t.salary END), 
     MAX(CASE WHEN t.high_ind = 1 then t.salary END) 
FROM (SELECT e.name as ename,d.name as dname,e.salary, 
      ROW_NUMBER() OVER(PARTITION BY d.name ORDER BY e.salary ASC) as low_ind, 
      ROW_NUMBER() OVER(PARTITION BY d.name ORDER BY e.salary DESC) as high_ind 
     FROM emp e 
     INNER JOIN dept d 
     ON(d.deptno = e.deptno)) t 
GROUP BY t.ename,t.dname 

EDIT:, wenn alles, was Sie brauchen, ist die Min- und Max-Gehalt auf jede Abteilung das ist dann eine einfache Gruppe von Klausel :

SELECT d.deptno,d.dname,MIN(e.salary) as min_sal,MAX(e.salary) as max_sal 
FROM dept d 
INNER JOIN emp e 
ON(d.deptno = e.deptno) 
GROUP BY d.deptno,d.name 
+1

Ich bin ein Anfänger in SQL. Können wir das mit einfachen Sub-Quries vereinfachen? @sagi –

+0

@nafeesahmed müssen Sie den Mitarbeiternamen zurückbringen? oder Sie müssen nur ausgeben -> 'DEPname, MaxSal, MinSal'? – sagi

+0

ich brauche nur DEPname, maxSal, minSal –

0

SELECT d.dname, Max (e.sal) MAXSAL, Min (e.sal) MINSAL VON dept d, emp e WHERE d.dept no = e.eptno Gruppe von d.dname

Verwandte Themen