考虑重叠活动,计算用户的“忙时”

hfd8

我一直在尝试解决此问题的方法,但到目前为止还没有解决。我正在使用Oracle。

我有一组看起来像这样的数据:

| USER   | ACTIVITY   | START_TIME      | END_TIME        | DURATION |
|--------|------------|-----------------|-----------------|----------|
| jsmith | Front Desk | 2020-08-24 8:00 | 2020-08-24 9:30 | 90       |
| jsmith | Phones     | 2020-08-24 8:15 | 2020-08-24 8:45 | 30       |
| jsmith | Phones     | 2020-08-24 9:45 | 2020-08-24 9:50 | 5        |
| bjones | Phones     | 2020-08-24 9:00 | 2020-08-24 9:10 | 10       |
| bjones | Front Desk | 2020-08-24 9:05 | 2020-08-24 9:15 | 10       |
| bjones | Phones     | 2020-08-24 9:15 | 2020-08-24 9:45 | 30       |

可以从以下查询生成以上输出:

SELECT
    USER,
    ACTIVITY,
    START_TIME,
    END_TIME,
    DURATION
FROM USER_ACTIVITIES
    WHERE USER IN ('jsmith', 'bjones')
    AND START_TIME BETWEEN '2020-08-24 00:00:00' AND '2020-08-25 00:00:00'
    ORDER BY USER, START_TIME, END_TIME
;

考虑到某些活动相互重叠,我需要计算每个用户的总“忙”时间。使用现有查询,对于jsmith,每个用户的总持续时间为125,对于jjones,为50,但是由于某些活动重叠,因此这并不反映用户忙碌的总时间。

我正在寻找的输出是用户每天的总忙碌时间:

| USER   | DATE       | DURATION |
|--------|------------|----------|
| jsmith | 2020-08-24 | 95       |
| bjones | 2020-08-24 | 45       |

任何帮助,将不胜感激。

巴巴罗斯·奥赞

您可以先取消设置分钟数,然后通过使用来消除不重叠的间隔NOT EXISTS由于这种情况,我没有考虑日间隔,EXTRACT( hour FROM max_end_time - min_start_time )*3600如果需要,可以添加其他计算案例

WITH  t AS
(  
SELECT "user" , MIN(start_time) AS min_start_time, MAX(end_time) AS max_end_time
  FROM user_activities
 GROUP BY "user" 
), t2 AS
(
 SELECT "user", min_start_time + NUMTODSINTERVAL(level, 'minute') AS minutes
   FROM t  
CONNECT BY level <= EXTRACT( hour FROM max_end_time - min_start_time )*60 + 
                    EXTRACT( minute FROM max_end_time - min_start_time ) 
    AND PRIOR SYS_GUID() IS NOT NULL
    AND PRIOR "user" = "user"
)
SELECT "user", COUNT(*) AS "Duration"
  FROM t2  
 WHERE EXISTS ( SELECT * 
                  FROM user_activities 
                 WHERE minutes BETWEEN start_time and end_time
                   AND "user" = t2."user" )
 GROUP BY "user" 

        

Demo

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用户在页面上活动时如何计算时间?

来自分类Dev

从重叠日期计算活动天数/月数

来自分类Dev

在计算时考虑逗号作为点?

来自分类Dev

考虑日光节约时如何计算时差?

来自分类Dev

在考虑SQL中的重叠值时需要自动排序

来自分类Dev

考虑到当日期重叠时仅对它们进行一次计数,因此在R中按组计算日期间隔

来自分类Dev

使用 data.table 从重叠日期计算活动天数

来自分类Dev

处于活动状态时,UISearchBar与UITableView内容重叠

来自分类Dev

尝试UMount时设备忙

来自分类Dev

当 Shiny 忙时禁用元素

来自分类Dev

用户不活动时如何自动注销?

来自分类Dev

MySQL - 根据一次查询中的状态计算活动/非活动/禁止用户并选择用户

来自分类Dev

相互重叠的活动子集

来自分类Dev

相互重叠的活动子集

来自分类Dev

片段重叠和活动

来自分类Dev

加载活动目录用户及其关联的计算机

来自分类Dev

Pandas - 按用户计算矢量化系列交易活动

来自分类Dev

随机考虑考虑发布的用户(mysql)

来自分类Dev

通过排除重叠本身,优先考虑重叠期间的总和

来自分类Dev

为什么带有活动工作目录的挂载“忙”?

来自分类Dev

为什么在计算递归过程的空间复杂度时不考虑堆栈帧的大小?

来自分类Dev

计算尺寸时是否考虑到NASM的“时间”指令?

来自分类Dev

计算时间复杂度时“要考虑的操作”(例如,如果,返回,分配..)

来自分类Dev

当render()处于活动状态时,计算机冻结

来自分类Dev

何时不考虑在C ++中选择可行的构造函数时使用用户定义的转换序列?

来自分类Dev

最好的数据库来存储用户移动时的位置,优先考虑读写速度?

来自分类Dev

计算重叠区域

来自分类Dev

访问VBA:查找计算机用户名是否为活动用户

来自分类Dev

如何计算总和考虑条件?

Related 相关文章

  1. 1

    用户在页面上活动时如何计算时间?

  2. 2

    从重叠日期计算活动天数/月数

  3. 3

    在计算时考虑逗号作为点?

  4. 4

    考虑日光节约时如何计算时差?

  5. 5

    在考虑SQL中的重叠值时需要自动排序

  6. 6

    考虑到当日期重叠时仅对它们进行一次计数,因此在R中按组计算日期间隔

  7. 7

    使用 data.table 从重叠日期计算活动天数

  8. 8

    处于活动状态时,UISearchBar与UITableView内容重叠

  9. 9

    尝试UMount时设备忙

  10. 10

    当 Shiny 忙时禁用元素

  11. 11

    用户不活动时如何自动注销?

  12. 12

    MySQL - 根据一次查询中的状态计算活动/非活动/禁止用户并选择用户

  13. 13

    相互重叠的活动子集

  14. 14

    相互重叠的活动子集

  15. 15

    片段重叠和活动

  16. 16

    加载活动目录用户及其关联的计算机

  17. 17

    Pandas - 按用户计算矢量化系列交易活动

  18. 18

    随机考虑考虑发布的用户(mysql)

  19. 19

    通过排除重叠本身,优先考虑重叠期间的总和

  20. 20

    为什么带有活动工作目录的挂载“忙”?

  21. 21

    为什么在计算递归过程的空间复杂度时不考虑堆栈帧的大小?

  22. 22

    计算尺寸时是否考虑到NASM的“时间”指令?

  23. 23

    计算时间复杂度时“要考虑的操作”(例如,如果,返回,分配..)

  24. 24

    当render()处于活动状态时,计算机冻结

  25. 25

    何时不考虑在C ++中选择可行的构造函数时使用用户定义的转换序列?

  26. 26

    最好的数据库来存储用户移动时的位置,优先考虑读写速度?

  27. 27

    计算重叠区域

  28. 28

    访问VBA:查找计算机用户名是否为活动用户

  29. 29

    如何计算总和考虑条件?

热门标签

归档