难懂的case语句公式

1mrurvl1  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(203)

我有两个工具的用户输入跟踪数据,用户可以在“输入”页面和/或“结果”页面中输入数据。
我想做一个平均年龄由用户\由网页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也应该在这里工作。
提前感谢您的帮助!

inkz8wg9

inkz8wg91#

你似乎想要:

select user_id, page_name, avg(age) as age
from (select distinct user_id, page_num, age
      from t
     ) t
group by user_id, page_num;

相关问题