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

ClickHouse进阶(十):Clickhouse数据查询-4

进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容!

🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客

📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情!

👍点赞:赞同优秀创作,你的点赞是对我创作最大的认可!

⭐️ 收藏:收藏原创博文,让我们一起打造IT界的荣耀与辉煌!

✏️评论:留下心声墨迹,你的评论将是我努力改进的方向!

 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频


目录

1. HAVING子句

2. ORDER BY 子句

3. LIMIT BY 子句

4. LIMIT 子句


1. HAVING子句

clickhouse也支持Having子句,需要与group by 同时出现,不能单独使用,它能够在聚合计算之后实现二次过滤数据。操作如下:

node1 :) select province,city,item,sum(totalcount) as total from mt_tbl2 group by province,city,item having total >1000;┌─province─┬─city─┬─item─────┬─total─┐│ 上海     │ 嘉定 │ 华为手机 │  1400 │└──────────┴──────┴──────────┴───────┘

2. ORDER BY 子句

Order by 子句通过声明排序键来指定查询数据返回时的顺序。在MergeTree表引擎中也有Order by 参数用于指定排序键。在MergeTree表引擎中指定order by 后,数据在各个分区内按照其定义的规则排序,这是一种分区内的局部排序,如果在查询时数据跨越了多个分区,则他们返回的顺序是无法预知的,每一次查询返回的顺序都有可能不同。这种情况下,如果希望数据总是能够按照期望的顺序返回,就需要借助Order by 子句来指定全局排序。

​​​​​​​3. LIMIT BY 子句

LIMIT BY 子句运行在Order by 之后和LIMIT 之前,能够按照指定分组,最多返回前n行数据,如果数据总行少于n行,则按实际数量返回,常用于TOPN的查询场景,功能类似Hive中的开窗函数。

LIMIT BY 的常规语法如下:

LIMIT n BY express

n指的是获取几条数据;express通常是一到多个字段,即按照express分组获取每个分组的前n条数据。

用法示例如下:

#目前有表mt_tbl2,数据如下:node1 :) select * from mt_tbl2;

#查询表mt_tbl2中每个省份对应的totalcount top2最大值
node1 :) select province,totalcount from mt_tbl2 order by totalcount desc limit 2 by province;

除了常规语法外,LIMIT BY 也支持跳过offset偏移量获取数据,具体语法如下:

#按照express分组,获取跳过y行后的top n行数据。
LIMIT n offset y BY express
#简化为
LIMIT y,n BY express

举例:获取表mt_tbl2中每个省份第二、第三大销售额。

node1 :) select province,totalcount from mt_tbl2 order by totalcount desc limit 2 offset 1 by province;

​​​​​​​4. LIMIT 子句

LIMIT 子句用于返回指定的前n行数据,常用于分页场景,它的三种语法形式如下:

#返回前n行数据LIMIT n#指定从第m行开始返回前n行数据LIMIT n OFFSET m#指定从第m行开始返回前n行数据简化写法LIMIT m,n

 👨‍💻如需博文中的资料请私信博主。


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

相关文章:

  • FPGA原理与结构——FIFO IP核的使用与测试
  • ABB CMA120 3DDE300400面板
  • 【代码随想录day25】动态规划:01背包理论基础
  • Python Opencv实践 - 轮廓检测
  • c#保留两位小数
  • [machineLearning]非监督学习unsupervised learning
  • C语言深入理解指针(非常详细)(四)
  • 知识库建设:从0到1搞定知识库建设的方法论分享
  • SpringBoot+Vue 的留守儿童系统的研究与实现,2.0 版本,附数据库、教程
  • 28.考试
  • 浏览器窗口间的通信
  • MATLAB 的 plot 绘图
  • SpringBoot项目--电脑商城【获取省市区列表】
  • 使用git把本地项目关联远程代码仓库,并推送到远程仓库
  • Spring+MyBatis使用collection标签的两种使用方法
  • k8s集群中集群方式安装nacos
  • 极客时间:数据结构与算法之美【学习笔记+思考实践】
  • 基于视觉重定位的室内AR导航项目思路(2):改进的建图和定位分离的项目思路
  • nodejs+vue+elementui精品课程网站设计
  • 40个Linux常用命令组合
  • NIFI关于Variables的使用
  • 2、VRP基础
  • docker容器运行成功但无法访问,原因分析及对应解决方案(最新,以Tomcat为例,亲测有效)
  • 第15章 秒杀商品隔离解决方案
  • 2023-08-31力扣每日一题-姜汁水题
  • 五大优化技巧,让你的视频直播app源码更加流畅
  • Weblogic10中常用Linux指令
  • OpenAI 函数调用教程
  • Spark有两种常见的提交方式:client 模式和 cluster 模式对机器 CPU 的影响
  • HarmonyOS/OpenHarmony(Stage模型)应用开发单一手势(三)