我有两个工具的用户输入跟踪数据,用户可以在“输入”页面和/或“结果”页面中输入数据。
我想做一个平均年龄由用户\由网页id,即。 avg(age) over (partition by user_id, page_name)
但在目前的形式中,两者之间经常存在重复 Inputs
以及 Results
,所以我想在取平均值之前把它清理干净。
当前表单的(简化)片段:
page_name page_type user_id age
Tool 2 Inputs 2174246 53
Tool 2 Inputs 2174246 50
Tool 2 Results 2174246 53
Tool 1 Inputs 2425226 65
Tool 1 Results 2425226 65
Tool 1 Results 2425226 50
Tool 2 Inputs 2427115 50
Tool 2 Results 2427115 55
Tool 1 Results 620071 65
Tool 2 Inputs 2427536 55
以下是我的想法(按用户id和工具),但不知道如何编写:
case when Results age = Inputs age then return Results age
when Results age is not null and Inputs age is null then return Results age
when Inputs age is not null and Results age is null then return Inputs age
when Results age is not null and Inputs age is not null then return each
案例陈述应考虑所有场景,除非我遗漏了某些内容,从而导致:
select user_id, page_name, avg(case statement for age) over (partition by user_id, page_name) as age
page_name user_id age
Tool 2 2174246 51.5
Tool 1 2425226 67.5
Tool 2 2427115 52.5
Tool 1 620071 65
Tool 2 2427536 55
数据在配置单元中,但sql也应该在这里工作。
提前感谢您的帮助!
1条答案
按热度按时间inkz8wg91#
你似乎想要: