sql random sampling per group
with randomly_sorted_users as (
select
user_id,
signup_date,
row_number() over(partition by date_trunc('year', signup_date)
order by random()) as random_sort
from
user_table
)
select
user_id,
signup_date
from
randomly_sorted_users
where
random_sort <= 5