【发布时间】:2016-09-06 05:17:27
【问题描述】:
以下是我尝试使用的 Oracle 11g 数据库中的示例数据,以提出 SQL 查询来返回每位员工每周赚取的佣金。如果员工在一周内没有赚取佣金,那么它应该显示为 0,就像在 Commission_earned 列中一样。 (假设一周从星期一开始)
SQL> 从销售中选择 *;
EMPLID PRODUCT_TYPE PRODUCTID SALE_AMOUNT COMMISSION_EARNED SALE_DATE
1001 Desktop 55355251 750 45 02-MAY-16
1002 Desktop 2332134 600 30 02-MAY-16
1001 Laptop 773643 1200 65 02-MAY-16
1003 Camera 5546232 450 25 03-MAY-16
1002 Printer 445321 150 15 04-MAY-16
1001 Printer 445321 150 15 10-MAY-16
1003 Camera 5546232 450 25 10-MAY-16
我正在尝试提出一个 sql 来返回每个员工每周赚取的总佣金。如有任何帮助或指点,我将不胜感激。
WEEKOF EMPLID COMMISSION_EARNED
02-MAY-16 1001 110
02-MAY-16 1002 45
02-MAY-16 1003 25
09-MAY-16 1001 15
09-MAY-16 1002 0
09-MAY-16 1003 25
我想出了下面的 sql,但从 09-MAY-16 开始的那一周,它没有显示 emplid 1002 的一行,commision_earned 为 0
SQL> select trunc(sale_date,'IW') WEEKOF,emplid,sum(COMMISSION_EARNED) COMMISSION_EARNED from sales group by trunc(sale_date,'IW'),emplid order by trunc(sale_date,'IW'),emplid;
WEEKOF EMPLID COMMISSION_EARNED 16 年 5 月 2 日 1001 110 16 年 5 月 2 日 1002 45 16 年 5 月 2 日 1003 25 16 年 5 月 9 日 1001 15 09-5-16 1003 25
【问题讨论】:
-
你有员工表吗?员工的开始日期是否会影响这一点(即,如果员工还没有开始工作,是否应该有一个 0 周的记录)?