要在sql中的数据中创建组吗

s8vozzvw  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(294)

我们有来自代理登录和注销活动的数据。我们希望显示登录时间作为昨天发生的登录和今天发生的注销的报告日期。
初始列名:agentnumber、activitydate、activity(login/logout)、time

Agent1, 20-oct, login, 12:00pm
Agent1, 20-0ct, away, 4:00pm
Agent1, 20-0ct, logout, 6:00pm
Agent1, 20-oct, login, 10:00pm
Agent1, 21-oct, away, 12:00Am
Agent1, 21-oct, logout ,4:00Am

必需的输出列名:agentnumber、activitydate、activity(login/logout)、time、groupnumber

Agent1, 20-oct, login, 12:00pm, group1
Agent1, 20-0ct away ,4:00pm ,group1
Agent1, 20-Oct, logout, 6:00pm ,group1
Agent1, 20-oct, login, 10:00pm, group2,
Agent1, 21-oct, away, 12:00Am, group2
Agent1, 21-oct, logout, 4:00am, group2

我们要计算注销登录并报告10月20日的数据,尽管注销在第二天
因此,在每次登录和注销之间,我们要组成一个组,如何从登录和注销中为一个组分配相同的值,以便我们可以报告20-10月的登录时间。
我们只需要sql来实现这一点。

uoifb46i

uoifb46i1#

下面的查询应该可以让您继续。如果您有两个以上的组,您可以修改案例陈述,以包括您需要的数量。

SELECT
     AgentNumber
    ,ActivityDate
    ,Activity
    ,Time
    CASE
        WHEN AgentNumber = Agent1 THEN Group1
        WHEN AgentNumber = Agent2 THEN Group2
        ELSE OtherGroup
    END AS GroupNumber
FROM AgentActivityTable1
WHERE ActivityDate >= '2018-10-20'

相关问题