2016-07-22 17 views
1

Ich versuche diese PL SQL-Abfrage zu schreiben, um das zweithöchste Gehalt nach Eingabe der ID ID aus der Tabelle zu erhalten. Ich habe dies zusammengefügt, aber die Abfrage läuft nicht nach der Eingabe der ID ID.Das zweithöchste Gehalt nach ID-Eingabe erhalten

CREATE TABLE OUTPUT_LOG 
    (my_column VARCHAR(250)); 
DECLARE 
    v_dpt_id 
BEGIN 
    select dpt_id 
     into v_dpt_id 
    from employees 
    where dpt_id = inticap('&prompt_user'); 
    select salary from 
    (select rownum n,a.* from 
     (select distinct salary from employees order by salary desc) a) 
where n = 2; 
    insert into output_log (my_column) 
    VALUES (||first_name||' '||last_name||' '||salary||); 
end; 
SELECT my_column 
    FROM OUTPUT_LOG; 
+0

sagen Sie mir die Verwendung von v_dpt_id Variable, die aus der Tabelle Mitarbeiter ist. –

Antwort

0

versuchen, diese

Sie können einfach Abfrage ändern wie

select * from employees where salary in 
(
    select salary from 
    (select rownum n,a.* from 
     (select distinct salary from employees where dpt_id = initcap('&prompt_user') order by salary desc) a 
     ) 
    where n = 2 
) 

diese Abfrage alle Mitarbeiter geben, die Secode höchsten Gehalt auf ihrer Abteilung.

ich hoffe, dass dies helfen kann.

+0

Es funktioniert und es ist weniger kompliziert, danke –

+0

Mark als beste Antworten oder upvote mich, wenn die Antwort perfekt ist. –