首页 > 解决方案 > Oracle SQL查询部门用户报表

问题描述

我有一个包含多个部门团队的表,其中记录了用户数量。

部门行每天都会更新,如果用户有任何变化,那么它将添加新条目,否则只会更新 last_updated 列。如果部门关闭,那么它将停止更新该记录。

我想我已经得到了报告的大部分内容,但不知何故无法展示像样的报告。

要求

  1. 3 个月的部门和用户数量(当前和前 2 个月)

——不知道我能不能接受。运行时的月份数和查询可以确定显示所需的月份。

  1. 列出列名称为 Month-YYYY

代码:

create table departments   
(
    dept    varchar2(20),
    started date,
    users   number(6),
    row_updated date   
);

insert into departments 
values ('Developer', DATE'2019-09-25', 20, sysdate); 

insert into departments 
values ('Developer', DATE'2019-08-15', 15, sysdate); 

insert into departments 
values ('Developer', DATE'2019-03-03', 10, sysdate); 

insert into departments 
values ('Developer', DATE'2019-03-01', 5, sysdate);

insert into departments 
values ('Manager', DATE'2019-01-01', 3, sysdate);

insert into departments 
values ('HR', DATE'2019-08-15', 6, sysdate);

insert into departments 
values ('HR', DATE'2019-05-01', 3, sysdate);

桌子:

 Dept        Started      Users  Row_Updated
 ----------  ------------ -----  -------------
 Developer   25-SEP-2019  20     25-SEP-2019
 Developer   15-AUG-2019  15     25-SEP-2019
 Developer   03-MAR-2019  10     25-SEP-2019
 Developer   01-MAR-2019  5      25-SEP-2019
 Manager     01-JAN-2019  3      25-SEP-2019
 HR       15-AUG-2019  5      25-SEP-2019
 HR          01-MAY-2019  3      25-SEP-2019

报告:(每个月的部门用户数)

 DEPT       JUL-2019  AUG-2019  SEP-2019
 ---------  --------  --------  --------
 Developer  10        15        20
 Manager    3         3         3
 HR         3         5         5

九月查询:

 -- below query will display all departments status as of sept
 SELECT dept, users
 FROM
     (SELECT 
          dept, started, users,
          rank() over partition by dept
          order by started desc) seq
      FROM 
          departments
      WHERE 
          trun(started,'MM') <= add_months(trunc(sysdate, 'MM'), -0)) d
WHERE 
    seq = 1
ORDER BY 
    1

我在 WHERE 子句中更改了上述查询 3 次,将 0 替换为 1 和 2,并使用另一个选择和连接来选择所有结果。

列出选择 3 次看起来不太好,如果明天我们需要 6 个月,那么查询需要再次更改。

标签: sqlreportingoracle12c

解决方案


推荐阅读