删除“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”中的重复项并计算步骤之间的平均值的主要内容,如果未能解决你的问题,请参考以下文章
Oracle SQL:对 CASE WHEN 重复使用子查询,而无需重复子查询