VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 585|回复: 3

SQL统计问题

[复制链接]

2

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-6 01:00:01 | 显示全部楼层 |阅读模式
--1\统计2016年所有员工每个月,每年的加班.要求是把每个月jbgs总计大于36的员工gh,以及月份输出来

select gh,convert(char(7),rq,111) YF,SUM(zbs) zbs,sum(jbgs) jbgs
--into GZB_MONTH
FROM GZMXB WHERE YEAR(rq)='2016'
group by gh,convert(char(7),rq,111)
having sum(jbgs) > 36

--2\把2016年jbgs总时超过(36*12)432的员工的gh输出来.
select gh,YEAR(rq) NF,SUM(zbs) zbs,sum(jbgs) jbgs
--into GZB_YEAR
FROM GZMXB WHERE YEAR(rq)='2016'
group by gh,YEAR(rq)
having sum(jbgs) > 432

--3\用2的结果和另外一张表(gzb)中的zgs.jbs比较.把不同的员工的GH.以及当月的月份输出来.

SELECT A.gh,B.gh,A.YF,B.YF,A.zbs,B.zbs,A.jbgs,B.jbgs
FROM GZB_MONTH A FULL JOIN gzb B ON A.gh=B.gh and A.YF=B.YF
WHERE A.zbs<>B.zbs OR A.jbgs<>B.jbgs





前两个都已经搞定了.第三个似乎有点问题.再帮帮我.谢谢
两张表:gzgl_gzb kqgl_Gs
kqgl_gs这张表里面有两列 zbgs jbgs记录所有人每个人每个月每天的工时和加班工时.
gzgl_gzb这张表里面的 zbs jbs 是对就的员工当月所有工进和加班时.就是zbs=每天的zbgs之和.jbs=每天的jbgs之和.本来第二张表里面的这两列是这样算来的.但是中间有手动改了一些数据.所以现在我想做的就是把结果不一样的.也就是改过的输出来.同样也要月份.工号.改前的数据.改后的数据.

回复

使用道具 举报

0

主题

35

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-5-23 13:30:01 | 显示全部楼层
select _s.员工,convert(char(4),_s.日期,112),sum(_s.zbgs) ,sum(_s.jbgs)
      ,min(_b.zbs),min(_b.jbs)
from kqgl_gs _s
join gzgl_gzb _b
     on convert(char(4),_s.日期,112) = _b.年月
     and _s.员工 = _b.员工              
group by 员工,convert(char(4),日期,112)

回复

使用道具 举报

0

主题

35

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-5-23 16:00:01 | 显示全部楼层
上面错了应该是
select _s.员工,convert(char(6),_s.日期,112),sum(_s.zbgs) ,sum(_s.jbgs)
      ,min(_b.zbs),min(_b.jbs)
from kqgl_gs _s
join gzgl_gzb _b
     on convert(char(6),_s.日期,112) = _b.年月
     and _s.员工 = _b.员工              
group by 员工,convert(char(6),日期,112)
回复

使用道具 举报

0

主题

35

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-5-23 18:30:01 | 显示全部楼层
前提是gzgl_gzb 表有一列‘年月’,格式形如‘201605’
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表