其他分享
首页 > 其他分享> > |NO.Z.00044|——————————|BigDataEnd|——|Hadoop&OLAP_ClickHouse.V16|-----------------------------|ClickH

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

作者:互联网



[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