【问题标题】:Q: How to configure ClickHouse to return NULL instead of 0?问:如何配置 ClickHouse 返回 NULL 而不是 0?
【发布时间】:2021-04-25 01:30:42
【问题描述】:

假设我创建了一个没有任何记录的表:

    create table metric (date Int32) Engine=MergeTree ORDER BY (date);

如果我运行这个查询

    select max(date) from metric;

ClickHouse 返回

+-----------+
| max(date) |
+-----------+
|         0 |
+-----------+
1 row in set (0.02 sec)

而不是

+-----------+
| max(date) |
+-----------+
|      NULL |
+-----------+
1 row in set (0.02 sec)

可以将 ClickHouse 配置为返回 NULL,而不必像这样编写查询:

select max(toNullable(date)) from metric;

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

    使用设置aggregate_functions_null_for_empty

    SELECT max(date)
    FROM metric
    SETTINGS aggregate_functions_null_for_empty = 1
    
    /*
    ┌─maxOrNull(date)─┐
    │            ᴺᵁᴸᴸ │
    └─────────────────┘
    */
    

    或考虑使用OrNull-combinator:

    SELECT maxOrNull(date)
    FROM metric
    
    /*
    ┌─maxOrNull(date)─┐
    │            ᴺᵁᴸᴸ │
    └─────────────────┘
    */
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多