hive sql 分组随机取数

问题描述(举例)
表结构(students_article):
student_id, article
id_1,article_1
id_1,article_2
id_1,article_3
id_2,article_4
id_2,article_5
hive sql 取某个表中某个班级每个学生的随机5篇作文

方案
order by与rand函数结合
千万级数据中进行随机抽样,PARTITION BY进行分组,组内使用rand()函数进行随机抽样,order by方式全局排序,rn关键字限制抽样返回的数据量。

SELECT *
FROM (
    SELECT student_id, regexp_replace(article, '\t', '') AS article
        , ROW_NUMBER() OVER (PARTITION BY student_idORDER BY rand()) AS rn
    FROM database_name.students_article
    WHERE d = '2022-08-10'
)
WHERE rn <= 5
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值