表名:tx_friends 字段:num_cnt 好友数量;day 日期;rtime 时间戳;country 国家;os 手机系统;uid 用户id 1. 按上面的上报定义,编写hive做一个好友中位数及平均数的报表。 一个用户 一天切N次好友列表时 会上报 n个同样的日期,n个不同的时间戳,n个同样的id
时间: 2024-02-23 11:00:39 浏览: 12
可以使用以下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字段。
db.nc2.aggregate([{$group:{_id:”$n1”,cnt:{$num:1}}}])
这是一个 MongoDB 的聚合操作,用于对集合 db.nc2 中的数据进行分组统计。具体解释如下:
- aggregate:表示进行聚合操作。
- $group:聚合操作的阶段之一,用于将文档按照指定的字段进行分组。
- _id:表示分组的字段,这里是 n1 字段。
- cnt:表示统计每组中文档的数量。
- $num:表示 MongoDB 内置的计数函数,用于统计文档数量。
因此,这个聚合操作的作用是按照 n1 字段对文档进行分组,统计每组中文档的数量,并将结果输出。