2016-04-19 6 views
0

Ich habe eine Datenbank mit Tausenden von Daten. Der Name der Tabelle ist Person11SQL ORACLE Sub-Abfrage. muss meine Ergebnisse beheben

Ich muss verketteten Namen, JobTitle und Gehalt der Leute wählen, die einen Cat-Wert von N haben und dessen Gehalt mindestens 30 Prozent höher als das Durchschnittsgehalt aller Leute mit ihrem JobTitle ist und ein Cat-Wert von N. Die drei Spaltenüberschriften sollten Name, JobTitle und Gehalt sein. Die Zeilen sollten in herkömmlicher Telefonbuch-Reihenfolge sortiert sein.

Bisher ist dies mein Code:

SELECT INITCAP(Fname || ' ' || Lname) AS Name, 
    INITCAP(JobTitle) AS JobTitle, Salary 
FROM Person11 
WHERE Upper(Cat) = 'N' 
AND Salary >= 1.30 * ( 
    Select avg(salary) 
    FROM Person11 
    Where upper(Cat) = 'N') 
ORDER BY upper(Lname), upper(Fname); 

Das gibt mir eine Ausgabe aller Menschen mit 30 Prozent höher als durchschnittlicher Gehalt mit ihrer Katze Wert von n.

Wie kann ich alle Menschen mit 30 Prozent höher als Durchschnittsgehalt aller Menschen mit ihrer JOB TITLE finden und wer hat einen Katzenwert von "N"?

Antwort

0

müssen Sie codition mit JobTitle hinzufügen:

SELECT Initcap(Fname || ' ' || Lname) AS Name, 
    Initcap(JobTitle) AS JobTitle, Salary 
FROM Person11 p 
WHERE Upper(Cat) = 'N' 
AND Salary >= 1.30 * ( 
    SELECT Avg(salary) 
    FROM Person11 
    WHERE Upper(Cat) = 'N' AND JobTitle = p.JobTitle) 
ORDER BY Upper(Lname), Upper(Fname); 
+0

es gibt eine Fehlermeldung, "SQL-Befehl nicht richtig beendet" – Anthony

+0

korrigiert, entfernen Sie 'AS' vor Tabelle alias ... –