ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

|NO.Z.00044|——————————|BigDataEnd|——|Hadoop&OLAP_ClickHouse.V16|-----------------------------|ClickH

2022-04-14 14:34:46  阅读:198  来源: 互联网

标签:NO DISTINCT v16 LIMIT SELECT 子句 ORDER ClickHouse




[BigDataHadoop:Hadoop&OLAP_ClickHouse.V16]      [BigDataHadoop.ClickHouse_OLAP数据库管理系统][|附录一|Hadoop|ClickHouse|ClickHouse:ClickHouse语法&Distingct&Limit子句|]








一、DISTINCT子句
### --- Distingt子句

~~~     如果 SELECT DISTINCT 被声明,则查询结果中只保留唯一行。 
~~~     因此,在结果中所有完全匹配的行集合中,只有一行被保留。
~~~     # 空处理
~~~     DISTINCT 适用于 NULL 就好像 NULL 是一个特定的值,并且 NULL==NULL. 换句话说,
~~~     在 DISTINCT 结果,不同的组合 NULL 仅发生一次。 
~~~     它不同于 NULL 在大多数其他情况中的处理方式。

~~~     # 替代办法
~~~     通过应用可以获得相同的结果 GROUP BY 在同一组值指定为 SELECT 子句,
~~~     并且不使用任何聚合函数。 但与GROUP BY 有几个不同的地方:
~~~     DISTINCT 可以与 GROUP BY 一起使用.
~~~     当 ORDER BY 被省略并且 LIMIT 被定义时,在读取所需数量的不同行后立即停止运行。
~~~     数据块在处理时输出,而无需等待整个查询完成运行。
~~~     # 限制
~~~     DISTINCT 不支持当 SELECT 包含有数组的列。

~~~     # 例子
~~~     ClickHouse支持使用 DISTINCT 和 ORDER BY 在一个查询中的不同的列。 
~~~     DISTINCT 子句在 ORDER BY 子句前被执行。
### --- 示例表:

┌─a─┬─b─┐
│ 2 │ 1 │
│ 1 │ 2 │
│ 3 │ 3 │
│ 2 │ 4 │
└───┴───┘
~~~     # 当执行 SELECT DISTINCT a FROM t1 ORDER BY b ASC 来查询数据,我们得到以下结果:

┌─a─┐
│ 2 │
│ 1 │
│ 3 │
└───┘
~~~     # 如果我们改变排序方向 SELECT DISTINCT a FROM t1 ORDER BY b DESC,我们得到以下结果:
~~~     行 2, 4 排序前被切割。
~~~     在编程查询时考虑这种实现特性。

┌─a─┐
│ 3 │
│ 1 │
│ 2 │
└───┘
二、LIMIT
### --- Limit

~~~     LIMIT m 允许选择结果中起始的 m 行。
~~~     LIMIT n, m 允许选择个 m 从跳过第一个结果后的行 n 行。 与 LIMIT m OFFSET n 语法是等效的。
~~~     n 和 m 必须是非负整数。
~~~     如果没有 ORDER BY 子句显式排序结果,结果的行选择可能是任意的和非确定性的。
~~~     LIMIT … WITH TIES 修饰符如果为 LIMIT n[,m] 设置了 WITH TIES ,
~~~     并且声明了 ORDER BY expr_list, you will get in result first n or n,
~~~     m rows and all rows with same ORDER BY fields values equal 
~~~     to row at position n for LIMIT n and m for LIMIT n,m.
~~~     此修饰符可以与: ORDER BY … WITH FILL modifier 组合使用.
### --- 例如以下查询:

hadoop01 :) SELECT * FROM (
            SELECT number%50 AS n FROM numbers(100)
            ) ORDER BY n LIMIT 0,5;
~~~输出参数
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
└───┘
~~~     # 单子执行了 WITH TIES 修饰符后
~~~     cause row number 6 have same value “2” for field n as row number 5

hadoop01 :) SELECT * FROM (
            SELECT number%50 AS n FROM numbers(100)
            ) ORDER BY n LIMIT 0,5 WITH TIES;
~~~输出参数
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                   ——W.S.Landor



来自为知笔记(Wiz)

标签:NO,DISTINCT,v16,LIMIT,SELECT,子句,ORDER,ClickHouse
来源: https://www.cnblogs.com/yanqivip/p/16144329.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有