#sql #clickhouse
#sql #clickhouse
Вопрос:
Допустим, у меня есть таблица со time_created, view_type, view_id
столбцами в clickhouse.
Как найти min и max time_created
с соответствующей view_id
группировкой по view_type
?
Это запуск sql:
select min(time_created) as min_time_created,
max(time_created) as max_time_created,
view_type from views
group by view_type;
И как добавить view_id
в каждый столбец результатов. Также рассмотрение time_created
не является уникальным.
Комментарии:
1. «Также учитывая, что time_created не является уникальным» — означает ли это, что один min / max time_created может быть связан более чем с одним view_id ? Не могли бы вы описать угловые случаи на примере входных данных и требуемого результата?
2. @vladimir, да, одновременно может быть много просмотров. Думаю, вам не нужны угловые случаи, поскольку ваш ответ — это именно то, что я искал. Спасибо!
Ответ №1:
Похоже, этот запрос должен помочь:
SELECT view_type,
min(time_created) as min_time_created,
max(time_created) as max_time_created
argMin(view_id, time_created) as min_view_id,
argMax(view_id, time_created) as max_view_id
FROM views
GROUP BY view_type
Ответ №2:
Попробуйте это и используйте функцию window
Select
MIN(time_created) OVER (PARTITION BY view_type) AS Min_time_created,
MAX(time_created) OVER (PARTITION BY view_type) AS Min_time_created,
View_type
from Views ;