我需要一个部门列表以及该部门中将参加的人员百分比。
输出:
表EMP:
EMPID FNAME LNAME DEPT 001......John......Lock...Sales 002......Lisa......Conrad...Accounting 003......Jerry.....Forts...Billing 004......Sara......Duval...Sales
表出席:
EMPID PARTY_ATTEND 001......Y 002......N 003......N 004......Y
有人能指出我正确的方向吗?我写了一些代码,但我不知道如何将所有内容组合在一起。我打算使用JOIN和一些计数器,但这是我到目前为止所拥有的......
select fname, lname, a.party_attend, a.empid from emp
select count(*)
from attendance a
inner join emp on a.empid = emp.empid
where a.party_attend = 'Y'
那么数学部分我不确定......
select sum( )/count(*)*100
帮助?我的大脑被炒了......
答案 0 :(得分:2)
试试这个:
CREATE TABLE emp (
empid NUMBER,
fname VARCHAR2(20),
dept VARCHAR2(20)
);
CREATE TABLE attendance (
empid NUMBER,
party_attend VARCHAR2(1)
);
INSERT INTO emp VALUES (1,' John', 'Sales');
INSERT INTO emp VALUES (2,' Lisa', 'Accounting');
INSERT INTO emp VALUES (3,' Jerry', 'Billing');
INSERT INTO emp VALUES (4,' Sara', 'Sales');
INSERT INTO attendance VALUES (1, 'Y');
INSERT INTO attendance VALUES (2, 'N');
INSERT INTO attendance VALUES (3, 'N');
INSERT INTO attendance VALUES (4, 'Y');
COMMIT;
SELECT
e.dept,
COUNT(DECODE(att.party_attend, 'Y', 1, NULL)) / COUNT(1) * 100 AS percentage
FROM
emp e JOIN attendance att ON (e.empid = att.empid)
GROUP BY e.dept;
输出:
DEPT PERCENTAGE -------------------- ---------- Accounting 0 Billing 0 Sales 100
输出不是您所期望的,因为在您的数据中,参加聚会的所有员工都来自销售部门......