2016-04-19 2 views
0

У меня есть база данных с тысячами данных. Название таблицы: Person11SQL ORACLE Sub-запрос. необходимо исправить мои результаты

Мне нужно выбрать конкатенированное имя, JobTitle и зарплату людей, у которых есть значение Cat N, а чей заработок составляет не менее 30 процентов выше средней зарплаты всех людей с их JobTitle и значение Cat N. Для трех столбцов заголовков должно быть имя, JobTitle и зарплата. Строки должны быть отсортированы в традиционном порядке телефонной книги.

До сих пор это мой код:

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); 

Это дает мне вывод всех людей с 30 процентов выше, чем средняя заработная плата с их кошачьих значением п.

Как я могу найти всех людей на 30 процентов выше, чем средняя зарплата всех людей с их JOB TITLE и у кого есть значение кошки 'N'?

ответ

0

вам нужно добавить codition с JobTitle:

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

это дает ошибку говоря «команда SQL не правильно закончилась» – Anthony

+0

исправлен, удалите 'как' перед тем алиаса таблицы ... –

Смежные вопросы