有一张表有日期,用户,年龄,求所有用户和活跃用户的总数已经平均年龄(活跃用户是指两天都有访问记录的用户),用户可以多次访问,hive语法用wtihas
时间: 2024-02-15 08:01:54 浏览: 158
论文研究-用户属性加权活跃近邻的协同过滤算法.pdf
可以用以下Hive语法实现:
```
WITH
active_users AS (
SELECT
user,
COUNT(DISTINCT date) AS days_active
FROM
table
GROUP BY
user
HAVING
days_active >= 2
)
SELECT
COUNT(DISTINCT user) AS total_users,
COUNT(DISTINCT active_users.user) AS active_users,
AVG(age) AS avg_age
FROM
table
LEFT JOIN active_users ON table.user = active_users.user
```
这个查询使用了Common Table Expression (CTE),其中定义了一个名为active_users的子查询,用于计算活跃用户。然后,主查询使用LEFT JOIN将活跃用户与原始表连接起来,以便计算所有用户的总数和平均年龄,并且COUNT DISTINCT函数用于计算唯一用户的数量。
阅读全文