Я думаю, что ваше rand()
сравнение отключено:
WITH table AS (
SELECT a.*
FROM `another_table` a
),
table_stats AS (
SELECT cc.*, SUM(c) OVER () as total
FROM (SELECT cat1, cat2, COUNT(*) as c
FROM table
GROUP BY cat1, cat2
HAVING c > 1000000
) cc
)
SELECT COUNT(*) as num_samples, cat1, cat2, ROUND(100*COUNT(*)/MAX(c),2) percentage
FROM (SELECT id, cat1, cat2, c
FROM (select t.*, COUNT(*) OVER () as t_total,
COUNT(*) OVER (PARTITION BY cat1, cat2) as tcc_total
from table `fh-bigquery.reddit_comments.2018_09` t
) t JOIN
table_stats b
USING (cat1, cat2)
WHERE RAND() < (1000.0 / t.t_total) * (c / total) / (tcc_total / t_total)
) t
GROUP BY 2, 3;
Обратите внимание, что вам нужен общий размер таблицы second , чтобы получить правильный (приблизительно) размер выборки.
Это тоже случайно. Если вы действительно хотите получить стратифицированную выборку, то вы должны сделать nth выборку для набора заказов. Если это вас интересует, задайте новый вопрос с соответствующими образцами данных, желаемыми результатами и пояснениями.