表名:tx_friends 字段:num_cnt 好友数量;day 日期;rtime 时间戳;country 国家;os 手机系统;uid 用户id 1. 按上面的上报定义,编写hive做一个好友中位数及平均数的报表。 一个用户 一天切N次好友列表时 会上报 n个同样的日期,n个不同的时间戳,n个同样的id
时间: 2024-02-23 14:00:39 浏览: 134
可以使用以下Hive SQL语句进行好友中位数和平均数的报表计算:
```
SELECT
day,
country,
os,
AVG(num_cnt) AS avg_num_cnt,
percentile_cont(0.5) WITHIN GROUP (ORDER BY num_cnt) AS median_num_cnt
FROM
tx_friends
GROUP BY
day,
country,
os;
```
这个查询将按天、国家和操作系统对好友数量进行分组,并计算平均值和中位数。其中,`percentile_cont(0.5) WITHIN GROUP (ORDER BY num_cnt)`表示按num_cnt字段升序排序后的中位数。
相关问题
表名:tx_friends 字段:num_cnt 好友数量;day 日期;rtime 时间戳;country 国家;os 手机系统;uid 用户id 1. 按上面的上报定义,编写hive sql 做一个好友中位数及平均数的报表。 一个用户 一天切N次好友列表时 会上报 n个同样的日期,n个不同的时间戳,n个同样的id
好的,以下是查询语句:
```
SELECT
day,
country,
os,
PERCENTILE(num_cnt, 0.5) as median_friends,
AVG(num_cnt) as avg_friends
FROM
tx_friends
GROUP BY
day,
country,
os;
```
这个查询语句会按照日期、国家和手机系统分组,然后计算每组的好友数量的中位数和平均数。注意到同一个用户一天内可能会上报多次,但是我们只需要统计一次,因此在这个查询中,我们没有使用uid字段。
阅读全文