有一张表有日期,用户,年龄,求所有用户和活跃用户的总数已经平均年龄(活跃用户是指两天都有访问记录的用户),用户可以多次访问,hive语法
时间: 2024-01-04 19:04:04 浏览: 70
可以使用Hive SQL语法来完成这个问题。
首先,我们需要筛选出所有访问记录中的活跃用户。可以使用子查询来实现,如下所示:
```
SELECT DISTINCT user FROM table WHERE date IN (SELECT DISTINCT date FROM table GROUP BY date HAVING COUNT(DISTINCT user) >= 2);
```
上述子查询中,先按日期分组,然后筛选出访问用户数不少于2人的日期,最后使用IN语句筛选出这些日期中访问过的用户。
接下来,我们可以根据上面筛选出的活跃用户,来求出总用户数和活跃用户数,以及平均年龄。可以使用COUNT、AVG等聚合函数来完成,如下所示:
```
SELECT COUNT(DISTINCT user) AS total_users, COUNT(DISTINCT CASE WHEN user IN (SELECT DISTINCT user FROM table WHERE date IN (SELECT DISTINCT date FROM table GROUP BY date HAVING COUNT(DISTINCT user) >= 2)) THEN user END) AS active_users, AVG(age) AS avg_age FROM table;
```
上述语句中,使用了CASE语句来判断用户是否为活跃用户,如果是,则计入活跃用户数的统计中。
以上就是Hive SQL实现的方案,通过这些语句,可以求出所有用户和活跃用户的总数以及平均年龄。
阅读全文