当前位置: 首页 > news >正文

clickhouse 查询group 分组最大值的一行数据。

按照 sql_finger_md5 分组取query_time_ms 最大的一行数据。
使用any函数可以去匹配到的第一行数据,所以可以先让数据按照query_time_ms 排序,然后再使用group by 和any结合取第一行数据,就是最大值的那一行数据。

selectany (time) as time ,any (query_time_ms) as query_time_ms ,any (sqltext) as sqltext,any (inst_id) as inst_id,any (inst_name) as inst_name,any (dbname) as dbname,any (host_address) as host_address,any (lock_times) as lock_times,any (parse_row_counts) as parse_row_counts,any (return_row_counts) as return_row_counts,any (sql_finger) as sql_finger,sql_finger_md5,any (sqltext_md5) as sqltext_md5
FROM(SELECTinst_id,inst_name,dbname,execution_start_time as time,host_address,query_time_ms,sqltext,lock_times,parse_row_counts,return_row_counts,sql_finger,sql_finger_md5,sqltext_md5FROMcmdb.rds_all_slow_sql_record_distributedWHERE(execution_start_time >= toDateTime(1711079437) AND execution_start_time <= toDateTime(1711684237) )AND (dbname = 'leopard_admin')AND host_address  not like '%root%' AND host_address  not like '%bi_user%' AND sqltext  not like '%insert%'order by sql_finger_md5 desc,query_time_ms desc) a
group bya.sql_finger_md5
order by query_time_ms desc
limit1000

窗体函数在数据量大的时候性能堪忧,在clickhouse中还有其他的处理方式。比如使用any()、anyLast()函数。

按官方文档的定义:any() “selects the first encountered value.”,也就是返回遇到的首个值,看上去是很符合当前的情况。但文档又做了说明:因为查询可能是以任意顺序执行的,并且可能每次执行得顺序都不同(如同我们上面的select * from user_order返回的行顺序不同),所以这个函数的执行结果可能是不确定的。如果要获得确定的值,可以使用“min”或者“max”。或者,select的对象的是一个已经排序过的子查询。

参考资料:
http://www.tracefact.net/tech/112.html

http://www.lryc.cn/news/328497.html

相关文章:

  • Python装饰器与生成器:从原理到实践
  • python-函数引入模块面向对象编程创建类继承
  • Spring:面试八股
  • Flask Python:请求上下文和应用上下文
  • 哔哩哔哩直播姬有线投屏教程
  • 您现在可以在家训练 70b 语言模型
  • 算法题剪格子使我重视起了编程命名习惯
  • P19:注释
  • python习题小练习(挑战全对)
  • 大数据学习-2024/3/30-MySQL基本语法使用介绍实例
  • C#_事件_多线程(基础)
  • vue 通过插槽来分配内容
  • YOLO图像前处理及格式转换
  • ES6 学习(二)-- 字符串/数组/对象/函数扩展
  • 《VMamba》论文笔记
  • 手机真机连接USB调试adb不识别不显示和TCPIP连接问题
  • MySQL分表后,如何做分页查询?
  • 【Deep Learning 11】Graph Neural Network
  • http和https的工作原理是什么?
  • STL中容器、算法、迭代器
  • 深入并广泛了解Redis常见的缓存使用问题
  • nginx界面管理工具之nginxWebUI 搭建与使用
  • linux下 罗技鼠标睡眠唤醒问题的解决
  • 架构师之路--Docker的技术学习路径
  • 【动手学深度学习-pytorch】 9.4 双向循环神经网络
  • 网际协议 - IP
  • DC-9靶场
  • 自定义类型(二)结构体位段,联合体,枚举
  • MySQL5.7源码分析--解析
  • windows10搭建reactnative,运行android全过程