【问题标题】:Clickhouse: Mapping BETWEEN filtering from an arrayClickhouse:在数组过滤之间映射
【发布时间】:2021-08-04 12:20:38
【问题描述】:

我知道如果我想过滤两个数字之间的列,我可以使用BETWEEN

SELECT a
FROM table
WHERE a BETWEEN 1 AND 5

有没有办法将过滤映射到一个值数组,例如,如果数组是[1, 10, ... , N]

SELECT a
FROM table
WHERE (a BETWEEN 1 AND 1+4) AND (a BETWEEN 10 AND 10+4) AND ... AND (a BETWEEN N AND N+4)

【问题讨论】:

    标签: sql clickhouse


    【解决方案1】:

    试试这个查询:

    WITH
        [1, 10, 75] AS starts_from,
        4 AS step,
        arrayMap(x -> (x, x + step), starts_from) AS intervals
    SELECT number
    FROM numbers(100)
    WHERE arrayFirstIndex(x -> number >= x.1 AND number <= x.2, intervals) != 0
    
    /*
    ┌─number─┐
    │      1 │
    │      2 │
    │      3 │
    │      4 │
    │      5 │
    │     10 │
    │     11 │
    │     12 │
    │     13 │
    │     14 │
    │     75 │
    │     76 │
    │     77 │
    │     78 │
    │     79 │
    └────────┘
    */
    

    【讨论】:

      猜你喜欢
      • 2020-03-17
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 2016-03-27
      • 2022-01-14
      • 2017-11-13
      相关资源
      最近更新 更多