这是我在开发ERP系统的时候遇到的一个报表问题,需要编写一条SQL语句,关联5张表,要求条件如下:
查询条件:部门='0001',起止日期('20071201'至'20071231'),员工类别='正式工',岗位类别='财务管理'
员工类别 岗位类别 原有人数 本月离职 现有人数 编制人数(在岗位类别表增加本字段) 离职率 离职率排行 现有人数服务年限(本月报到,3个月以下,6个月以下,1年以下,2年以下,3年以下,3年以上)
有关联的5张表如下:
1.员工类别表T_EMPLOY_CLASS a表
EMP_CLASSID VARCHAR2(10) --类别编号
CLASS_NAME VARCHAR2(30) --类别名称
SUBVENTION_JE NUMBER(15,4) Y --每年工龄补贴金额
MAX_YEAR NUMBER(8,2) Y --最高工龄补贴年限
PRIZE_RADIX NUMBER(15,4) Y --奖金基数
B_SUBSIDY NUMBER(15,4) Y --生日补贴
RGID VARCHAR2(30) Y --区域
SEQN_NUM VARCHAR2(30) --自动编号
2.岗位类别表T_POST_CLASS b表
POST_CLASS_ID VARCHAR2(10) --类别编号
UP_CLASS VARCHAR2(10) --上级类别 数据挖掘研究院
POST_NAME VARCHAR2(30) --类别名称
END_MARK NUMBER(1) Y --是否末级
RGID VARCHAR2(30) Y --区域
SEQN_NUM VARCHAR2(30) --自动编号
3.岗位设置表T_POST_inf c表
POST_ID VARCHAR2(20) --岗位ID
POST_NAME VARCHAR2(30) Y --岗位名称
SUPERIOR VARCHAR2(30) Y --直接上级
SUBORDINATE VARCHAR2(30) Y --直接下级
POST_INTENTION VARCHAR2(100) Y --职位目的
POST_POPEDOM VARCHAR2(100) Y --工作权限
CONDITION VARCHAR2(200) Y --办公条件 数据挖掘研究院
POST_INFO VARCHAR2(600) Y --岗位职责
NEED_QUALIFY VARCHAR2(600) Y --任职资格
NICE_QUALIFY VARCHAR2(600) Y --胜任资格
PAY_CONSULT VARCHAR2(100) Y --薪金参考 数据挖掘研究院
DEVELOPMENT VARCHAR2(600) Y --职业发展
ASSESS VARCHAR2(600) Y --考核指标
POST_TIME VARCHAR2(100) Y --工作时间
POST_CLASS VARCHAR2(10) Y --岗位类别
RGID VARCHAR2(30) Y --区域
SEQN_NUM VARCHAR2(30) --自动编号
DEPTID VARCHAR2(30) Y --部门编号 数据挖掘研究院
PREPARATION NUMBER(10) Y --编制人数
4.员工表T_EMPLOYEES d表
EMPLOYEES_ID VARCHAR2(20) --员工编号
DEPTID VARCHAR2(30) --部门编号
EMP_NAME VARCHAR2(50) --员工姓名
NATIVE_PLACE VARCHAR2(100) Y --籍贯
SEX NUMBER(1) Y --性别
POST_ID VARCHAR2(20) Y --岗位ID
GRADE_ID NUMBER(3) Y --奖金等级
PAY_ID VARCHAR2(20) Y --基础工资等级
BIRTHDAY DATE Y --生日
IDENTITY_CARD VARCHAR2(30) Y --身份证号
AWARD_UNIT VARCHAR2(100) Y --发证机关 数据挖掘研究院
DEGREE VARCHAR2(10) Y --学历
EMP_TITLE VARCHAR2(300) Y --职技能力
EMP_PARTY VARCHAR2(10) Y --党、团员
EMP_HEALTH VARCHAR2(30) Y --健康状况
EMP_PHONE VARCHAR2(50) Y --联系电话
EMP_EMAIL VARCHAR2(50) Y --电子邮件
EMP_ADDRESS VARCHAR2(200) Y --家庭住址
IN_DATE DATE Y --入职时间 数据挖掘研究院
OUT_DATE DATE Y --离职时间
WORK_YEARS NUMBER(3) Y --工龄(年)
EMP_CLASSID VARCHAR2(20) Y --员工类别
EMP_STATE NUMBER(1) Y --员工状态 1:在职,3:离职
BANK_ACCOUNT VARCHAR2(40) Y --银行帐号
ENTRUST_ACCOUNT VARCHAR2(40) Y --银行委托号
SB_ACCOUNT VARCHAR2(50) Y --社会保险号
YB_ACCOUNT VARCHAR2(50) Y --医保号 数据挖掘研究院
ZFGJY_ACCOUNT VARCHAR2(50) Y --住房公积金个人帐户
PIC BLOB Y --相片
REMARK VARCHAR2(200) Y --备注
BANK VARCHAR2(50) Y --银行 数据挖掘研究院
NATIVE_WB NUMBER(1) Y --本地户籍
PIC_NAME VARCHAR2(100) Y --相片名称
REG_MAN VARCHAR2(20) Y --登记人
REG_DATE DATE Y --登记日期 数据挖掘研究院
SPEC_TECH VARCHAR2(200) Y --特长
SELF_LIKE VARCHAR2(200) Y --爱好
SELF_DICRB VARCHAR2(500) Y --个人履历
MOBILE VARCHAR2(100) Y --手机号
NATIONAL VARCHAR2(10) Y --籍贯
PASSWORD VARCHAR2(50) Y --密码
RGID VARCHAR2(30) Y --区域
SEQN_NUM VARCHAR2(30) --自动编号
TEST_PERIOD NUMBER(1) Y --试用期 1:是,0否
5.部门表
RGID VARCHAR2(30) --区域
DEPTID VARCHAR2(30) --部门编号
DEPTNAME VARCHAR2(60) --部门名称 数据挖掘实验室
DEPTLEVEL NUMBER(4) --部门等级
SUPERDEPT VARCHAR2(30) Y --直接上级
REMARK VARCHAR2(255) Y --备注
DISPNO NUMBER(4) Y -- 数据挖掘研究院
DEPTTYPE VARCHAR2(4) Y --部门类型
5.部门表 ST_DEPT起止日期是哪个日期?关注下,兄弟是做人力资源相关产品吧你是电讯盈科的吧
- SQL code
- selset 部门表.部门名称, 岗位设置表.编制人数, (select count(*) from 员工表 where 部门ID = "0001" and month(离职日期) = month(开始日期) and 员工状态 = 3) as 本月离职, ((select count(*) from 员工表 where 部门ID = "0001" and 员工状态 = 1) as 现有人数, (现有人数+ 本月离职) as 原有人数, from T_POST_inf 岗位设置表,部门表 where 部门ID="0001"数据挖掘研究院
剩下的离职率看你要什么格式的了,自己搞。离职率排行没搞明白什么意思,你的部门iD都给定了还排什么?
现有人数服务年限是不是指各个工期的人数?那样也就是多几个子查询,跟上面没啥区别up............做人要厚道,你会拿出200分吗

