SELECT wb*50 as min, count(1), sum(count(1)) OVER (ORDER BY wb) FROM (SELECT width_bucket(char_length(spoiler_text)+char_length(text), 0, 1199, 24)-1 as wb FROM statuses LIMIT 1000000) AS t GROUP BY wb;
min | count | sum
------+--------+---------
0 | 585255 | 585255
50 | 87341 | 672596
100 | 103253 | 775849
150 | 98207 | 874056
200 | 26304 | 900360
250 | 27776 | 928136
300 | 21541 | 949677
350 | 14415 | 964092
400 | 9088 | 973180
450 | 6590 | 979770
500 | 5210 | 984980
550 | 3252 | 988232
600 | 2997 | 991229
650 | 1710 | 992939
700 | 1297 | 994236
750 | 1026 | 995262
800 | 735 | 995997
850 | 498 | 996495
900 | 450 | 996945
950 | 450 | 997395
1000 | 310 | 997705
1050 | 274 | 997979
1100 | 210 | 998189
1150 | 188 | 998377
1200 | 1623 | 1000000
(25 rows)
Time: 1657.927 ms (00:01.658)