Найти минимальный максимум с другим атрибутом?

#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 ;