Clickhouse进阶分组复合排序查询

group by分组后的字段聚合查询:

groupArray:分组聚合

arrayJoin:分组拆分

arraySort:自定义排序

arrayFilter:中间值过滤

对数据中的特殊字符串进行替换,并根据分隔符进行切割,过滤掉为空的数组数据,对数据元素进行排序,在用分隔符拼接。

sql 复制代码
arrayStringConcat(  arraySort(   arrayDistinct(  arrayFilter(o -> o != '' , splitByChar(';',   assumeNotNull(REPLACE(POOR_APP_CATEGORY, ',', ';'))) )   )  ) , '; ' ) as "质差应用"

arraySort支持自定义排序

参数 1:lambda表达式,- 表示!asc排序方式

参数 2:数组

参数 3:权值顺序

sql 复制代码
select arraySort((x, y) -> y, arrayDistinct(  arrayFilter(o -> o != '' , splitByChar(';', '优;中;差'))), [0, 1, 2]);
['优','中','差']
select arraySort((x, y) -> - y, arrayDistinct(  arrayFilter(o -> o != '' , splitByChar(';', '优;中;差'))), [0, 1, 2]);
['差','中','优']

max、argMax、argMin函数:获取某个列维度,对应的那一行数据。

获取时间最新的预警数据:

sql 复制代码
    select PREWARN_ID,
           max(CREATE_DATE),
           argMax(END_DATE, CREATE_DATE) as END_DATE,
           argMax(CHECK_DATE, CREATE_DATE) as CHECK_DATE,
           argMax(STATUS, CREATE_DATE) as STATUS,
           argMax(MODIFY_USER, CREATE_DATE) as MODIFY_USER,
           argMax(WARN_TIMES, CREATE_DATE) as WARN_TIMES,
           MAX(RANK) as RANK, MAX(CITY) as CITY
    from ADO_SA_OVERSEA_BUSINESS.T_PRE_WARNING_STATUS
    group by PREWARN_ID 
    HAVING STATUS = 0
    ORDER BY WARN_TIMES, CHECK_DATE, PREWARN_ID;

注意点:

该函数取不到null,会根据列维度排序,取最大(小)的不为空数据,所以请考虑数据中是否有null数据。

如果有,建议使用 如下判断数据的形式进行规避

sql 复制代码
select argMax(if(STATUS is null, '', STATUS), CREATE_DATE) as STATUS
相关推荐
Sayai6 天前
ClickHouse WITH FILL 实战:监控大屏时间序列补零,附多粒度指标表与物化视图级联设计
大数据·运维·数据仓库·clickhouse·物化视图
l1t10 天前
DeepSeek总结的clickhouse的二进制文件自解压机制
clickhouse
l1t11 天前
DeepSeek总结的pg_clickhouse 与 chdb 更新:编码、嵌套与类型
数据库·clickhouse·postgresql
拔剑纵狂歌13 天前
ClickHouse system.query_log 字段详解与排障实践
后端·clickhouse·1024程序员节
SelectDB技术团队13 天前
Apache Doris 高性能 Open Lake Variant 读写技术解析(含对比数据)
数据结构·数据库·clickhouse·日志·apache doris·selectdb·湖仓架构升级
SelectDB技术团队14 天前
ClickHouse 存日志的能力边界:并发、检索与 trace 回放的实测对照
数据结构·数据库·clickhouse·日志分析·apache doris·日志存储
SelectDB技术团队14 天前
Agent Trace 数据底座建设:宽表建模、全文检索与成本聚合的配置与验证步骤
大数据·python·clickhouse·elk·elasticsearch·全文检索·复杂查询
此时不提桶,更待何时14 天前
05-03-B-ClickHouse与OLAP面试与生产事故实战
clickhouse·面试·nosql
SelectDB技术团队15 天前
ELK 太占磁盘、ES 总报写入拒绝:从归因到可执行的优化清单
大数据·clickhouse·elk·elasticsearch·全文检索·复杂查询·实时更新
frjc15 天前
数据库选型:如何从众多数据库中选出最理想的那一个
redis·mysql·clickhouse·elasticsearch