clickhouse:如何在另一列中找到数组中高于日期的最少日期?

德米特里·贝夫兹(Dmitry Bevz):

基本上,我的表具有以下数据结构:

  • id_level1Int32
  • id_level2Int32
  • event_date日期
  • arr_object_idsInt32数组 -按下一列排序
  • arr_object_dates日期数组 -升序排列

我需要的是每对具有至少object_date一个以上event_date的值(id_leve1, id_level2)在Clickhouse中怎么可能?

然后我会arrayElement(arr_object_ids, indexOf(arr_object_dates, solution)用来获取对应的object_id

弗拉基米尔:

试试这个查询:

SELECT 
  id_level1,
  id_level2,
  /*arrayFirst(x -> x > event_date, arr_object_dates) least_date,*/
  arrayFirstIndex(x -> x > event_date, arr_object_dates) least_date_index,
  least_date_index = 0 ? -1 : arrayElement(arr_object_ids, least_date_index) object_id /* -1 if result not found */
FROM (
  /* emulate original table */
  SELECT 1 id_level1, 2 id_level2, '2020-01-03' event_date, 
    [4, 5, 6,7] arr_object_ids, 
    ['2020-01-01', '2020-01-03', '2020-01-06', '2020-01-11'] arr_object_dates
  UNION ALL
  SELECT 3 id_level1, 4 id_level2, '2020-05-03' event_date, 
    [4, 5, 6,7] arr_object_ids, 
    ['2020-01-01', '2020-01-03', '2020-01-06', '2020-01-11'] arr_object_dates)
ORDER BY event_date 
/* result
┌─id_level1─┬─id_level2─┬─least_date_index─┬─object_id─┐
│         1 │         2 │                3 │         6 │
│         3 │         4 │                0 │        -1 │
└───────────┴───────────┴──────────────────┴───────────┘
*/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从一列日期列表中找到最早的日期?

如何找到比另一列中最早的日期更早的日期;在SQL中

如何在 JSON 数组中找到每个日期的最新时间?

如何在pandas中找到包含另一列的所有可能值的行值

如何在Excel中找到一列中的值并替换另一列中的值?

如何在R中同一数据帧中的一列中找到单词的位置而另一列中找到单词的位置?

在汇总另一列的同时选择日期最少的行

如何在熊猫数据框中找到一列Numpy数组的布尔值?

当另一列已填满时,如何在另一列中自动设置日期

如何根据另一列的日期条件更新列?

如何在 PostgreSQL 中找到最早的日期?

如何在R中找到日期的“原点”

如何在Excel中找到eweekend日期?

如何从给定的日期集中找到每个月的最少日期

如果名称在另一列中找到,如何在该列中指定名称?

如何在另一列中找到一个单元格的最大值?

如何在另一列中显示最大日期金额?

如何在Postgres的另一列中为特定条件选择最近的日期?

如何在 Linq to SQL 中从另一列添加小时到日期

如何在R中按组比较日期和更改另一列中的值

熊猫:如何从另一列设置日期时间?

如何在Excel中使用另一列作为条件从一列中找到最大值

熊猫fillna日期从另一列

选择一列+另一列最大日期

在另一列中找到的汇总列的R总和

当另一列是当前日期时,如何更新日期列?

如何合并一列中的日期和另一列中的时间

如何根据Pandas中另一列的条件比较同一列中的日期?

如何合并一列中的日期和另一列中的时间?