统计Oracle上月1天统计分析报告(oracle上个月这一天)
统计Oracle上月1天统计分析报告
在现代社会,数据统计和分析已经成为企业经营和决策中不可或缺的一部分。而Oracle作为一款广泛应用于企业信息化建设的数据库软件,其统计分析功能自然也倍受青睐。本文将介绍如何利用Oracle上月1天的数据进行统计分析,并生成报告。
1.创建测试数据表
为了方便测试,我们首先需要在Oracle数据库中创建一个测试数据表。表结构如下:
CREATE TABLE EMPLOYEE(
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(20),
DEPARTMENT VARCHAR2(20),
SALARY NUMBER,
HIRE_DATE DATE);
其中ID为员工编号,NAME为员工姓名,DEPARTMENT为员工所在部门,SALARY为员工薪资,HIRE_DATE为员工入职日期。
2.插入测试数据
在测试数据表中插入一些随机生成的测试数据,用于后面的分析。插入语句如下:
INSERT INTO EMPLOYEE(ID,NAME,DEPARTMENT,SALARY,HIRE_DATE)
SELECT ROWNUM,’Employee ‘ || ROWNUM,DECODE(MOD(ROWNUM,5),0,’IT’,1,’HR’,2,’Finance’,3,’Sales’,4,’Marketing’),’5000’+DBMS_RANDOM.VALUE(0,10000),SYSDATE-DBMS_RANDOM.VALUE(0,180)
FROM DUAL
CONNECT BY ROWNUM
该语句将随机生成500条员工记录,薪资在5000-15000之间,入职日期在半年内随机分布。其中DECODE函数用于将ROWNUM与5取模后转化为相应的部门名称。
3.编写统计分析SQL语句
为了统计上月1号当天的员工情况,我们需要编写一条复杂的SQL语句。这里我们采用WITH语句来组织SQL语句,方便理解和修改。
WITH T1 AS (
SELECT COUNT(*) AS TOTAL_EMPLOYEE,SUM(SALARY) AS TOTAL_SALARY FROM EMPLOYEE WHERE HIRE_DATE=TRUNC(LAST_DAY(SYSDATE-1, ‘MONTH’))),
T2 AS (
SELECT DEPARTMENT,COUNT(*) AS DEPARTMENT_EMPLOYEE,SUM(SALARY) AS DEPARTMENT_SALARY FROM EMPLOYEE WHERE HIRE_DATE=TRUNC(LAST_DAY(SYSDATE-1, ‘MONTH’)) GROUP BY DEPARTMENT),
T3 AS (
SELECT DEPARTMENT,COUNT(*) AS DEPARTMENT_EMPLOYEE,SUM(SALARY) AS DEPARTMENT_SALARY FROM EMPLOYEE WHERE HIRE_DATE=TRUNC(LAST_DAY(SYSDATE-1, ‘MONTH’)) GROUP BY DEPARTMENT HAVING COUNT(*)>(SELECT COUNT(*)/5 FROM EMPLOYEE GROUP BY DEPARTMENT ORDER BY COUNT(*) DESC LIMIT 1)),
T4 AS (
SELECT COUNT(*) AS NEW_EMPLOYEE FROM EMPLOYEE WHERE HIRE_DATE=TRUNC(LAST_DAY(SYSDATE-2))),
T5 AS (
SELECT COUNT(*) AS RESIGNED_EMPLOYEE FROM EMPLOYEE WHERE HIRE_DATE=TRUNC(LAST_DAY(SYSDATE-1))-1)
SELECT * FROM T1,T2,T3,T4,T5;
通过WITH语句,我们将需要的统计信息分别放到不同的临时表中,这样可以避免重复计算和冗长的SQL语句。具体地,T1表统计所有员工的数目和总薪资;T2表按照部门统计员工数目和薪资;T3表筛选出员工数目超过总数5%的部门;T4表统计上月1号当天入职的新员工数目;T5表统计上月1号当天离职的员工数目。最终通过SELECT语句将结果集合并输出。
4.生成报告
为了更好地展示分析结果,我们可以将结果导出到Excel等电子表格软件中,并进行一定的格式化。如果需要每日或每周生成分析报告,可以使用Oracle自带的SPOOL命令或其他外部工具来实现。以下是一个简单的SPOOL语句示例:
SET NEWPAGE 0
SET SPACE 0
SET PAGESIZE 0
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
SET LINESIZE 1000
SPOOL ’employee_report.csv’
SELECT * FROM T1,T2,T3,T4,T5;
SPOOL OFF
通过设置不显示分页、标题等元素,将结果集直接输出到CSV文件中。我们可以将其导入到Excel中,对结果集进行统计和可视化,生成精美的统计分析报告。
总结
利用Oracle进行数据统计分析是企业经营和决策中的重要一环,掌握相关的SQL语法和工具可以让我们更好地理解和利用数据。本文介绍了如何利用Oracle上月1天的数据进行统计分析,并生成报告,可以供读者参考和借鉴。