в каждой группе ?
LIMIT N BY column_name
Это не то . Ситуация: есть таблица request_logs . внутри есть столбец - domain ( домены дублируются ) . мне нужен напр. 100 строк из этой таблицы с GROUP BY domains . А это выдаёт только 1 домен. Мне нужен максимум 3 домена.
.
пока не понятно что на выходе, приведите пожалуйста пример исходных данных и как это должно выглядеть в результате
Точно такой же вопрос но только для КХ https://dba.stackexchange.com/questions/84157/how-to-select-top-10-records-from-each-category
SELECT CellId, PathId, sum(Duration) FROM ( (SELECT CellId, PathId, Duration FROM table) ) GROUP BY CellId, PathId ORDER BY CellId, sum(Duration) DESC LIMIT 10 BY CellId
А зачем ты так делаешь? Что мешает сразу сгруппировать
ничего, просто для наглядности)
ну лучше сразу группировать, а то подзапрос дофига памяти отожрет
а вот тут поподробнее. с чего бы он отожрет? там разве не конвеер запросов строится?
да, там нет ORDER BY и GROUP BY в подзапросе, так что он будет просто стриминговый, вы правы
А есть документация по которой это можно понять?)
что именно понять? что ORDER BY будет сортировать в памяти и сбрасывать промежуточные результаты диск если данных много? и что GROUP BY тоже будет группировать в памяти и если много данных то сбрасывать промежуточные результаты на диск?
Что подзапрос «стриминговый», и что это за тип подзапросов такой)
аа... ну это скорее общее определение, "стриминговый" значит что можно не выделять память под весь результат, а читать по блочно и отправлять на выход в ковейере про это есть немного вот тут https://clickhouse.com/docs/en/development/architecture/#block-streams
Обсуждают сегодня