Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要帮助使用SQL计算教师工资吗_Sql_Oracle_Oracle10g_Oracle Sqldeveloper - Fatal编程技术网

需要帮助使用SQL计算教师工资吗

需要帮助使用SQL计算教师工资吗,sql,oracle,oracle10g,oracle-sqldeveloper,Sql,Oracle,Oracle10g,Oracle Sqldeveloper,嗨,我正在计算教师工资,这是我关系中的一个派生属性。下面是我的创建、插入和查询。我的问题是假设所有的老师都工作了3年。所有教师(高中、小学、中学)的基本工资为2000美元。查询生成三个表,我只想要最后一个结果正确的表。我该如何解决这个问题 多谢各位 查询结果(我只想要最后一个表): 查询: CREATE TABLE STAFF ( Staff_ID integer NOT NULL, Phone_num varchar(15), Job_type var

嗨,我正在计算教师工资,这是我关系中的一个派生属性。下面是我的创建、插入和查询。我的问题是假设所有的老师都工作了3年。所有教师(高中、小学、中学)的基本工资为2000美元。查询生成三个表,我只想要最后一个结果正确的表。我该如何解决这个问题

多谢各位

查询结果(我只想要最后一个表):

查询:

CREATE TABLE STAFF
(
     Staff_ID integer NOT NULL,
     Phone_num varchar(15),      
     Job_type varchar(20) NOT NULL,
     PRIMARY KEY (Staff_ID)
);

CREATE TABLE STAFF_LEVEL
(
    Staff_ID integer NOT NULL,
    Position_level  varchar(20),
    FOREIGN KEY (Staff_ID) REFERENCES STAFF(Staff_ID)
    ON DELETE CASCADE
);

insert into STAFF values(1000,'469-574-5637','Teacher');
insert into STAFF values(1001,'214-893-3744','Teacher');
insert into STAFF values(1002,'459-645-3433','Teacher');
insert into STAFF values(1003,'214-452-3432','Teacher');
insert into STAFF values(1004,'469-423-2344','Teacher');
insert into STAFF values(1005,'489-551-3004','Teacher');
insert into STAFF values(1006,'214-233-2872','Teacher');
insert into STAFF values(1007,'234-584-3231','Teacher');
insert into STAFF values(1008,'233-455-2933','Teacher');
insert into STAFF values(1009,'354-133-4911','Teacher');
insert into STAFF values(1010,'703-267-4191','Teacher');

insert into STAFF_LEVEL values(1000, 'High School');
insert into STAFF_LEVEL values(1001,'Middle School');
insert into STAFF_LEVEL values(1002, 'High School');
insert into STAFF_LEVEL values(1003, 'Elementary School');
insert into STAFF_LEVEL values(1004,'High School');
insert into STAFF_LEVEL values(1005,'Elementary School');
insert into STAFF_LEVEL values(1006,'High School');
insert into STAFF_LEVEL values(1007, 'Middle School');
insert into STAFF_LEVEL values(1008, 'High School');
insert into STAFF_LEVEL values(1009,'Elementary School');
insert into STAFF_LEVEL values(1010, 'High School');


-- Teachers have BaseSalary of ($2000). Assumes all teachers have been working for 3 years.-----
--- Elementary School additional        Salary = ($2000) + Level Bonus
select DISTINCT c.staff_id, (2000 + NVL(sub.bonus,0)) * 12 AS Salary
from STAFF_LEVEL, STAFF c LEFT JOIN (select staff_id, 500 AS bonus
               from STAFF_LEVEL
            where Position_level = 'Elementary School'
            group by staff_id
            ) sub ON c.STAFF_ID = sub.STAFF_ID
where job_type = 'Teacher' and Position_level = 'Elementary School'
UNION ALL
--- Middle School additional        Salary = ($2000) + Level Bonus
select DISTINCT c.staff_id, (2000 + NVL(sub.bonus,0)) * 12 AS Salary
from STAFF_LEVEL, STAFF c LEFT JOIN (select staff_id, 1000 AS bonus
            from STAFF_LEVEL
            where Position_level = 'Middle School'
            group by staff_id
            ) sub ON c.STAFF_ID = sub.STAFF_ID
where job_type = 'Teacher' and Position_level = 'Middle School'
UNION ALL
-- High School additional         Salary = ($2000) + Level Bonus
select DISTINCT c.staff_id, (2000 + NVL(sub.bonus,0)) * 12 AS Salary
from STAFF_LEVEL, STAFF c LEFT JOIN (select staff_id, 2000 AS bonus
            from STAFF_LEVEL
            where Position_level = 'High School'
            group by staff_id
            ) sub ON c.STAFF_ID = sub.STAFF_ID
where job_type = 'Teacher' and Position_level = 'High School'
order by Salary;
希望你在找这个。我建议你多读书

CREATE TABLE STAFF
(
     Staff_ID integer NOT NULL,
     Phone_num varchar(15),      
     Job_type varchar(20) NOT NULL,
     PRIMARY KEY (Staff_ID)
);

CREATE TABLE STAFF_LEVEL
(
    Staff_ID integer NOT NULL,
    Position_level  varchar(20),
    FOREIGN KEY (Staff_ID) REFERENCES STAFF(Staff_ID)
    ON DELETE CASCADE
);

insert into STAFF values(1000,'469-574-5637','Teacher');
insert into STAFF values(1001,'214-893-3744','Teacher');
insert into STAFF values(1002,'459-645-3433','Teacher');
insert into STAFF values(1003,'214-452-3432','Teacher');
insert into STAFF values(1004,'469-423-2344','Teacher');
insert into STAFF values(1005,'489-551-3004','Teacher');
insert into STAFF values(1006,'214-233-2872','Teacher');
insert into STAFF values(1007,'234-584-3231','Teacher');
insert into STAFF values(1008,'233-455-2933','Teacher');
insert into STAFF values(1009,'354-133-4911','Teacher');
insert into STAFF values(1010,'703-267-4191','Teacher');

insert into STAFF_LEVEL values(1000, 'High School');
insert into STAFF_LEVEL values(1001,'Middle School');
insert into STAFF_LEVEL values(1002, 'High School');
insert into STAFF_LEVEL values(1003, 'Elementary School');
insert into STAFF_LEVEL values(1004,'High School');
insert into STAFF_LEVEL values(1005,'Elementary School');
insert into STAFF_LEVEL values(1006,'High School');
insert into STAFF_LEVEL values(1007, 'Middle School');
insert into STAFF_LEVEL values(1008, 'High School');
insert into STAFF_LEVEL values(1009,'Elementary School');
insert into STAFF_LEVEL values(1010, 'High School');


-- Teachers have BaseSalary of ($2000). Assumes all teachers have been working for 3 years.-----
--- Elementary School additional        Salary = ($2000) + Level Bonus
select DISTINCT c.staff_id, (2000 + NVL(sub.bonus,0)) * 12 AS Salary
from STAFF_LEVEL, STAFF c LEFT JOIN (select staff_id, 500 AS bonus
               from STAFF_LEVEL
            where Position_level = 'Elementary School'
            group by staff_id
            ) sub ON c.STAFF_ID = sub.STAFF_ID
where job_type = 'Teacher' and Position_level = 'Elementary School'
UNION ALL
--- Middle School additional        Salary = ($2000) + Level Bonus
select DISTINCT c.staff_id, (2000 + NVL(sub.bonus,0)) * 12 AS Salary
from STAFF_LEVEL, STAFF c LEFT JOIN (select staff_id, 1000 AS bonus
            from STAFF_LEVEL
            where Position_level = 'Middle School'
            group by staff_id
            ) sub ON c.STAFF_ID = sub.STAFF_ID
where job_type = 'Teacher' and Position_level = 'Middle School'
UNION ALL
-- High School additional         Salary = ($2000) + Level Bonus
select DISTINCT c.staff_id, (2000 + NVL(sub.bonus,0)) * 12 AS Salary
from STAFF_LEVEL, STAFF c LEFT JOIN (select staff_id, 2000 AS bonus
            from STAFF_LEVEL
            where Position_level = 'High School'
            group by staff_id
            ) sub ON c.STAFF_ID = sub.STAFF_ID
where job_type = 'Teacher' and Position_level = 'High School'
order by Salary;
select c.staff_id, (2000 + NVL(sub.bonus,0)) * 12 AS Salary
from STAFF c INNER JOIN (select staff_id, case Position_level 
when 'Elementary School' then 500 
when 'Middle School' then 1000 
when 'High School' then 2000  end AS bonus
from STAFF_LEVEL  ) sub ON c.STAFF_ID = sub.STAFF_ID
where job_type = 'Teacher'
order by salary