表mm:工号 姓名 岗位类别 是否受奖 单位 部门 金额
001 yhy 管理岗 1 公司管理 信息通讯中心 1000
001 yhy 生产岗 1 公司管理 信息通讯中心 1000现在要求汇总报表:
部门 总人数 管理受奖人数 生产受奖人数 金额
信息通讯中心 120 80 40 120000
现在能实现:select count(工号) as a,sum(金额) from mm group by 单位,部门主要是根据单位,部门来统计,现在要求分岗位类别,请问怎么处理?最好是一条sql语句,谢谢各位
001 yhy 管理岗 1 公司管理 信息通讯中心 1000
001 yhy 生产岗 1 公司管理 信息通讯中心 1000现在要求汇总报表:
部门 总人数 管理受奖人数 生产受奖人数 金额
信息通讯中心 120 80 40 120000
现在能实现:select count(工号) as a,sum(金额) from mm group by 单位,部门主要是根据单位,部门来统计,现在要求分岗位类别,请问怎么处理?最好是一条sql语句,谢谢各位
from mm
group by 单位,部门,岗位
create table mm(工号 varchar(5),姓名 varchar(10),岗位类别 varchar(20),
是否受奖 bit,单位 varchar(10),部门 varchar(32),金额 int)
insert into mm
select '001','yhy','管理岗',1,'公司管理','信息通讯中心',1000
union all
select '001','yhy','生产岗',1,'公司管理','信息通讯中心',1000
union all
select '001','yhy','生产岗',1,'公司管理','信息通讯中心1',1000
--代码
select 部门,总人数=sum(1),管理受奖人数=sum(case when 岗位类别='管理岗' then 1 else 0 end),
生产受奖人数=sum(case when 岗位类别='生产岗' then 1 else 0 end),sum(金额)
from mm
group by 部门
--删除测试环境
drop table mm
生产受奖人数=sum(case when 岗位类别='生产岗' then 1 else 0 end),金额=sum(金额)
//这里加个"金额=",
from mm
group by 部门
有一个考勤表:怎么将考勤状态在dbgrideh中显示为特别符号?比如:0显示+,1显示-,2显示#等
--建立测试环境
create table mm(工号 varchar(5),姓名 varchar(10),岗位类别 varchar(20),
是否受奖 char(1),单位 varchar(10),部门 varchar(32),金额 integer)
insert into mm
select '001','yhy','管理岗',1,'公司管理','信息通讯中心',1000 from dual
union all
select '001','yhy','生产岗',1,'公司管理','信息通讯中心',1000 from dual
union all
select '001','yhy','生产岗',1,'公司管理','信息通讯中心1',1000 from dual
--代码
select 部门,sum(1) 总人数, sum(decode(岗位类别,'管理岗', 1, 0 )) 管理受奖人数,
sum(decode(岗位类别,'生产岗', 1, 0)) 生产受奖人数,sum(金额)
from mm
group by 部门
---结果:
部门 总人数 管理受奖人数 生产受奖人数 SUM(金额)
-------------------------------- ---------- ------------ ------------ ----------
信息通讯中心 2 1 1 2000
信息通讯中心1 1 0 1 1000