0

私のデータベースには、さまざまな部門があり、さまざまな人が割り当てられています。各部門のすべての従業員に 10% の昇給を与えてから、それらを追加して、各部門の合計給与値を取得したいと考えています。ただし、姓が「ce」で終わる従業員が少なくとも 1 人いる部門はリストに含めるべきではありません。研究部門、管理部門、本社部門があります。研究部門と管理部門のみを、それぞれの合計給与値とともに表示する必要があります。

SELECT
dname
, SUM(1.1*salary) AS total_salary 
FROM
employee INNER JOIN department
ON dnumber=dno
WHERE lname NOT LIKE '%ce'
GROUP BY dname
ORDER BY total_salary DESC

これは、すべての部門がリストされていることを除いて、私が望むことを行います。これらのステートメントを修正して、正しい部門のみが表示されるようにするにはどうすればよいですか?

4

2 に答える 2

1

SELECT dname,
SUM(1.1 * salary) AS total_salary
FROM employee
inner join department
ON dnumber = dno
WHERE dname NOT IN (SELECT dname
FROM departments
INNER JOIN employees
ON dnumber = dno
AND lname NOT LIKE '%ce')
GROUP BY dname
ORDER BY total_salary DESC

于 2013-11-11T08:15:32.883 に答える
0
SELECT d2.dname as dept_name, SUM(1.1*e2.salary) AS total_salary 
FROM employee e2
INNER JOIN department d2 ON e2.dnumber=d2.dno and d2.dname not like (
    select distinct(d.dname) as dept_name2 from employees e left join department d on e.dnumber=d.dno where e.lname like '%ce'
    ) as temp
WHERE e2.lname NOT LIKE '%ce'
GROUP BY dept_name
ORDER BY total_salary DESC

前提:
1)はその名前を表す表department_nameの列です 2)必要な部門の正確な名前ですdepartment
ResearchAdministration

于 2013-11-11T08:19:18.357 に答える