SQL ORACLE 子查询。需要修复我的结果
SQL ORACLE Sub query. need to fix my outcomes
我有一个包含数千条数据的数据库。 table 的名字是 Person11
我需要 select 将 Cat 值为 N 且薪水至少比所有具有 JobTitle 和N 的 Cat 值。三个列标题应为 Name、JobTitle 和 Salary。这些行应该按照传统的电话簿顺序排序。
到目前为止这是我的代码:
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% 且他们的 cat 值为 n 的人的输出。
我怎样才能找到所有工资比 JOB TITLE
的人的平均工资高 30% 并且 cat 值为 'N' 的人?
您需要使用 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);
我有一个包含数千条数据的数据库。 table 的名字是 Person11
我需要 select 将 Cat 值为 N 且薪水至少比所有具有 JobTitle 和N 的 Cat 值。三个列标题应为 Name、JobTitle 和 Salary。这些行应该按照传统的电话簿顺序排序。
到目前为止这是我的代码:
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% 且他们的 cat 值为 n 的人的输出。
我怎样才能找到所有工资比 JOB TITLE
的人的平均工资高 30% 并且 cat 值为 'N' 的人?
您需要使用 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);