删除“case when”中的重复项并计算步骤之间的平均值

Posted

技术标签:

【中文标题】删除“case when”中的重复项并计算步骤之间的平均值【英文标题】:remove duplicates in "case when" and calculate average between steps 【发布时间】:2021-09-06 21:08:38 【问题描述】:

我目前正在生成一个表格,我正在尝试通过 sessionid 分别对注册表单的旅程事件进行排序,以下是我的代码:

create table merchant_general.signup_step_v20 as
select a.sessionid, min(b.sentat) over (partition by b.sessionid) as pageload, 
case when a.properties.itemname in ("MerchantType1", "MerchantType2", "MerchantType3", "MerchantType4") and a.properties.clicktype = 'forward' then max(a.sentat) over (partition by a.sessionid) end as SelectedMerchantType,
case when a.properties.itemname = "Continue" and a.properties.`location`= "Yeni başvuru-mağaza bilgileri" then max(a.sentat) over (partition by a.sessionid) end as EnteredNamePass,
case when a.properties.itemname = "Continue" and a.properties.`location`= "yeni başvuru-başvuru bilgileri" then max(a.sentat) over (partition by a.sessionid) end as EnteredAuthInfo,
case when a.properties.itemname = "Submit" and a.properties.`location`= "yeni başvuru-başvuruyu tamamlayın" then max(a.sentat) over (partition by a.sessionid) end as EnteredCompanyInfo
from merchant.mp_clickitem a 
inner join merchant.mp_pageload b 
on a.sessionid = b.sessionid 
where b.dy >= date_sub(current_date,30) and b.dy <= date_sub(current_date,1) and a.dy >= date_sub(current_date,30) and a.dy <= date_sub(current_date,1) 
and b.properties.pagename = "Register" and
a.properties.itemname in("MerchantType1", "MerchantType2", "MerchantType3", "MerchantType4","Continue","Submit") and a.properties.`location` != "Reset Password" and a.sessionid != '' 

A列对应于:sessionID, 而B列是页面加载(第一步), C列是SelectedMerchantType(第二步) D列是EnteredNamePass(第三步), E列是EnteredAuthInfo(第四步), F 列是 EnteredCompanyInfo(最后一步)。

我想计算两个连续步骤之间的微小差异,避免重复sessionID。在一个步骤完成之前不可能进行下一步,并且不同的步骤不能具有完全相同的时间戳

决赛桌应该是这样的:

【问题讨论】:

很难理解你想要什么...你不能简化问题吗?需要六个步骤来理解您的问题,或者仅用 2 个步骤就足以代表它?此外,如果您想帮助我们帮助您,您应该粘贴纯文本而不是图像 你能接受我在 LinkedIn 的请求吗?如果我可以pm你@JaimeDrq,我可以更好地展示整个案例 【参考方案1】:

您是否尝试按 sessionID 分组?

【讨论】:

以上是关于删除“case when”中的重复项并计算步骤之间的平均值的主要内容,如果未能解决你的问题,请参考以下文章

如何批量检查 MS-Access 中的重复项并记录更改?

如何检查Case When Statement中的重复值

Oracle SQL:对 CASE WHEN 重复使用子查询,而无需重复子查询

根据一列删除重复项并根据另一表中的数据进行过滤

正则表达式提取、删除重复项并与 Google 表格中的管道连接

使用 RLE 删除每行的连续重复项并检查 R 中的序列逻辑