SQL问题

TABLE2.xls

image.png

JackTang 发布于 2021-4-15 10:48
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
烟尘Lv6高级互助
发布于2021-4-15 11:01(编辑于 2021-4-15 11:38)

sqlsever:

2)

    select '2009' as 年度, isnull(t1.月度,t2.月度) as 月度,isnull(t2.新进人数,0)-isnull(t1.离职人数,0) as 变化人数

    from

    (select 月度,count(人员姓名) 离职人数 from 表 where 年度=2009 and 类型='离职') t1

    full join (select 月度,count(人员姓名) 新进人数 from 表 where 年度=2009 and 类型='新进') t2 on t1.月度=t2.月度

    order by 年度,月度

3)

    SELECT a.年度,SUM(b.离职人数) as 累计离职人数 from

    (SELECT COUNT(人员姓名) 离职人数,年度 FROM 表 GROUP BY 年度) a

    INNER JOIN (SELECT COUNT(人员姓名) 离职人数,年度 FROM 表 GROUP BY 年度) b ON a.年度>=b.年度

    GROUP BY a.年度

4)

    SELECT '2009' AS 年度,a.月度,a.离职人数, (a.离职人数-b.离职人数)/b.离职人数 AS 环比增长率 

    from

    (SELECT COUNT(人员姓名) 离职人数,月度 FROM 表 WHERE 年度=2009 GROUP BY 月度) a

    INNER JOIN (SELECT COUNT(人员姓名) 离职人数,月度 FROM 表 WHERE 年度=2009 GROUP BY 月度

    UNION ALL SELECT COUNT(人员姓名) 离职人数,0 AS 月度 FROM 表 WHERE 年度=2008 AND 月度=12 GROUP BY 月度

    ) b ON a.月度=b.月度+1

    ORDER BY a.月度

  • Z4u3z1 Z4u3z1 (a.离职人数-b.离职人数)/b.离职人数 这个没考虑 isnull(b.离职人数,0) =0
    2021-04-15 12:35 
  • 烟尘 烟尘 回复 Z4u3z1 看数据表,2008-12到2009-11都有离职人员,不存在null
    2021-04-15 13:06 
最佳回答
0
指间沙Lv6中级互助
发布于2021-4-15 11:06

表结构有吗。

最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-4-15 11:14

SQL SERVER

1)

SELECT 公司名称,年度,月度,SUM(SL) FROM (

SELECT 公司名称,年度,月度,(CASE WHEN 类型='离职' THEN -1 ELSE 1 END) [SL] FROM tablea WHERE 年度='2009'

) A GROUP BY 公司名称,年度,月度 ORDER BY 年度 ASC,月度 ASC

2)

SELECT B.年度,B.年度离职,SUM(B.年度离职) OVER(ORDER BY B.年度 ASC) [累计离职] FROM (

SELECT 年度,SUM(SL) [年度离职] FROM (

SELECT 年度,(CASE WHEN 类型='离职' THEN 1 ELSE 0 END) [SL] FROM tablea

) A GROUP BY 年度

) B

3)

不想写了.....

  • JackTang JackTang(提问者) 第二题你题目理解错了
    2021-04-15 11:38 
  • Z4u3z1 Z4u3z1 回复 JackTang(提问者) 我的1对应你的2,是你的2题还是我的2题
    2021-04-15 11:41 
  • JackTang JackTang(提问者) 回复 Z4u3z1 明白了,你的更简便
    2021-04-15 12:06 
  • 3关注人数
  • 520浏览人数
  • 最后回答于:2021-4-15 11:38
    请选择关闭问题的原因
    确定 取消
    返回顶部