1、随机取数
MySql或Hive数据库,从样本数据中随机提取数据表中的N条记录,可以使用rand()函数,结合使用order by对数据排序,用limit N取topN
select * from TableName order by rand() limit N
案例:每月信用卡支出总额超过1000美元的客户有机会赢得抽奖。假设您在2019年10月从所有符合条件的客户中随机选择100名幸运客户,您是否可以编写一个查询以返回“user_id”列表作为此次抽奖的结果?
--Task 1. Lucky Draw
select
user_id,
substr(create_time, 1, 7) month,
sum(amount) amount_sum
from card_exp
where substr(create_time, 1, 7) = ’2019-10’
group by user_id, substr(create_time, 1, 7)
having amount_sum > 1000
order by rand()
limit 100
2、生成随机数
随机数函数: rand()
语法: rand(),rand(int seed)
返回值: double
说明:返回值是一个0到1范围内的随机数。如果指定种子seed,则会等到一个不变的随机数
--不指定种子
hive> select rand() from tabel_name;
0.5577432776034763
hive> select rand() from tabel_name;
0.6638336467363424
--指定随机数种子为1
hive> select rand(1) from tabel_name;
0.7220096548596434
hive> select rand(1) from tabel_name;
0.7220096548596434