ItemThumbId, sum(Clicks) as Clicks, sum(Views) as Views, if (Views>0, Clicks/Views, 0) as Ctr from stat_rotation_events_search_by_key sres where ZoneSearchKeywordTranslation ='some search query' and ZoneGroup='some group' GROUP BY ItemGalleryId , ItemThumbId HAVING Views>25 order by Ctr desc Limit 1000
Как мне сделать аналог count(*) чтобы знать, сколько таких записей всего?
ну с window function в два клика
Прошу прощения, я все еще не понял. Вот у меня получается результат ┌─ItemGalleryId─┬─ItemThumbId─┬─Clicks─┬─Views─┬──────────────────Ctr─┐ │ 3318834 │ 12720993 │ 2 │ 35 │ 0.05714285714285714 │ │ 3489146 │ 14903948 │ 2 │ 37 │ 0.05405405405405406 │ то есть статистика по каждой паре ItemGalleryId, ItemThumbId И мне нужно понять, сколько есть таких пар, чтобы знать, на сколько страниц рисовать пагинацию
я понял что вы про ORDER BY Ctr DESC Limit 1000 вы спрашиваете сколько было до limit ?
Как раз для того, чтобы формировать Limit offset, мне это и нужно: знать, сколько всего записей, чтобы разбить на группы по 100
ха, я нашел баг в WF, не получится
а бага лечится (order by) select * from ( ( select *, count() over () cnt from ( select * from numbers(10000000) ) ) ) order by number limit 3 ┌─number─┬──────cnt─┐ │ 0 │ 10000000 │ │ 1 │ 10000000 │ │ 2 │ 10000000 │ └────────┴──────────┘
select * from (select *, count() over () cnt from (select ItemGalleryId, ItemThumbId, sum(Views) as Views from stat_rotation_events_search_by_key sres where ZoneSearchKeywordTranslation ='some query' and ZoneGroup='some group' GROUP BY ItemGalleryId , ItemThumbId HAVING Views>25)) Вот так вот? Добавляет count() отдельной колонкой
Спасибо, так меня вполне устроит
Случайно мне удалось найти некую замену этому методу. В клиенте php есть метод countAll(), который, по описанию, отдает rows_before_limit_at_least (If the query contains GROUP BY, rows_before_limit_at_least is the exact number of rows there would have been without a LIMIT - по мануалу). То есть о нас, кажется, уже позаботились)
Да, но это не совсем правда. Если оптимизация groupbyinorder включена то результат может быть неверный.
Обсуждают сегодня