1

我需要一份部门列表以及该部门将参加的人员百分比。

输出:

  • 销售 = 30% 参加
  • 会计 = 15% 出席

表 EMP:

EMPID FNAME LNAME 部门
001......约翰......锁......销售
002......丽莎......康拉德......会计
003......杰瑞......堡垒......计费
004......萨拉......杜瓦尔......销售

出席人数:

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

帮助?我的脑袋被炸了……

4

1 回答 1

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;

输出:

部门百分比
-------- ----------
会计 0
计费 0
销售额 100

输出不是您所期望的,因为在您的数据中,参加聚会的所有员工都来自销售部门......

于 2013-10-30T20:33:21.280 回答