继续请教一个SQL该怎么写

jiaping108 2017-02-16 01:51:00
部门表a{
depid;
depname
}
部门员工表b{
usersid;
depid;
createtime; 格式yyyy-MM-dd
}
根据输入年份(员工的createime)获取部门当年以及前一年的员工数量,如,输入2016
获得结果集

部门名称(depname) 2016年员工数(count(usersid) date_format(b.createtime,'%Y') =2016) 2015年员工数
研发部 50 82
市场部 100 173
...全文
164 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2017-02-19
  • 打赏
  • 举报
回复
select depname, (select count(*) from 部门员工表b where year(createtime)=2016 where depid=t.depid) as 2016年员工数, (select count(*) from 部门员工表b where year(createtime)=2015 where depid=t.depid) as 2015年员工数 from 部门表a t
二月十六 2017-02-18
  • 打赏
  • 举报
回复
引用 2楼我是你的主体 的回复:
获取当前输入年份的员工数和前一年份的员工数,这个少了一个
试试这个,没测试
--输入年份
DECLARE @createtime DATETIME = '2016'
--测试数据
;WITH 部门表a (depid,depname)
as
(
select 1,'研发部' union all
SELECT 2,'产品部'
),部门员工表b(usersid,depid,createtime)AS(
select 1,1,'2016-01-01 00:00:00' union all
select 2,2,'2016-02-01 00:00:00' union all
select 3,1,'2016-03-01 00:00:00' union all
select 4,1,'2015-01-01 00:00:00' union all
select 5,2,'2015-11-01 00:00:00'
)
--测试数据结束
SELECT 部门表a.depname ,
( SELECT COUNT(1)
FROM 部门员工表b
WHERE 部门表a.depid = 部门员工表b.depid
AND YEAR(@createtime)=YEAR(createtime)
) AS 员工数,
( SELECT COUNT(1)
FROM 部门员工表b
WHERE 部门表a.depid = 部门员工表b.depid
AND YEAR(@createtime)=date_add(createtime,interval -1 year)
) AS 去年员工数
FROM 部门表a
jiaping108 2017-02-18
  • 打赏
  • 举报
回复
获取当前输入年份的员工数和前一年份的员工数,这个少了一个
二月十六 2017-02-16
  • 打赏
  • 举报
回复
语句:
--输入年份
DECLARE @createtime DATETIME = '2016'
--测试数据
;WITH 部门表a (depid,depname)
as
(
select 1,'研发部' union all
SELECT 2,'产品部'
),部门员工表b(usersid,depid,createtime)AS(
select 1,1,'2016-01-01' union all
select 2,2,'2016-02-01' union all
select 3,1,'2016-03-01' union all
select 4,1,'2015-01-01' union all
select 5,2,'2015-11-01'
)
--测试数据结束
SELECT 部门表a.depname ,
( SELECT COUNT(1)
FROM 部门员工表b
WHERE 部门表a.depid = 部门员工表b.depid
AND YEAR(@createtime)=YEAR(createtime)
) AS 员工数
FROM 部门表a


结果:


下次继续请教请@ 我

56,673

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧