У меня не получается заставить работать промежуточные итоги в BigQuery.
Я нашел здесь пример, который работает: Текущие итоги BigQuery SQL
SELECT word, word_count, SUM(word_count) OVER(ORDER BY word DESC)
FROM [publicdata:samples.shakespeare]
WHERE corpus = 'hamlet'
AND word > 'a' LIMIT 30
Но что я действительно хочу сделать - это подсчитать количество самых популярных слов, которые покрывают 80% от общего количества слов. Итак, я попытался подсчитать общую сумму при заказе сначала по word_count:
SELECT word, word_count, SUM(word_count) OVER(ORDER BY word_count DESC)
FROM [publicdata:samples.shakespeare]
WHERE corpus = 'hamlet'
AND word > 'a' LIMIT 30
Но я понял:
Row word word_count f0_
1 o'er 18 18
2 answer 13 31
3 meet 8 39
4 told 5 44
5 treason 4 **52**
6 quality 4 **52**
7 brave 3 55
Текущая сумма не увеличивается со строки 5 до строки 6. Вероятно, потому что в обоих случаях word_count равно 4.
Что я делаю неправильно?
Может есть способ получше? Мой план состоял в том, чтобы подсчитать промежуточную сумму. Затем разделите его на сумму (word_count) OVER () и отфильтруйте только строки с менее чем 80%. Затем посчитайте количество этих строк.