weixin_41227170
weixin_41227170
2019-05-09 10:00
采纳率: 50%
浏览 811

mysql如何对时间段进行按月统计

图片说明

如图,陈雷这个人请了三次假,第一次是2019-04-30到2019-05-08,第二次是2019-05-09到2019-05-11,第三次是2019-05-31到2019-06-01,我想统计出他每个月的请假次数,结果为,2019-04为1次,2019-05为3次,2019-06为1次,这种情况该如何用sql实现呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • weixin_42080504
    have_power 2019-05-09 11:16
    已采纳

    你关键的东西都没说啊,比如说,请假可不可以跨月份来请。另外你提供的数据不是一个完整的数据,没有包含所有情况,分析起来会有漏洞。

    SELECT
        p.employee_name,
        date_format(p.date, '%Y%m') time,
        sum(p.num)
    FROM
        (
            SELECT
                employee_name,
                start_time date,
                1 num
            FROM
                test190509
            UNION ALL
                SELECT
                    employee_name,
                    end_time,
                    CASE
                WHEN date_format(start_time, '%Y%m') = date_format(end_time, '%Y%m') THEN
                    0
                ELSE
                    1
                END end_num
                FROM
                    test190509
        ) p
    GROUP BY
        p.employee_name,
        time;
    
    点赞 评论
  • u013219624
    tommer911 2019-05-09 10:23

    表设计一开始就是有问题的,你参考企业微信,你会发现,请假多天都是多条记录,一天请假也可能多条 比如按小时请假

    点赞 评论
  • qq_28570289
    初夏海边 2019-05-09 17:28

    请假次数 ——只计算每个月的start_time字段计数、截掉后面的时分秒分组, count计数

    点赞 评论

相关推荐