# 聚合函数

# min

计算一组值中的最小值的聚合函数。

示例

SELECT min(salary) FROM employees;
SELECT department, min(salary) FROM employees GROUP BY department;

# max

计算一组值中的最大值的聚合函数。

示例

SELECT max(salary) FROM employees;
SELECT department, max(salary) FROM employees GROUP BY department;

# sum

计算总和。仅适用于数字。

示例:

SELECT sum(salary) FROM employees;

# avg

计算算术平均值。

avg(x)

参数

x — 输入值,必须为整数、浮点数或十进制数。

返回值

  • 算术平均值,始终为Float64类型。
  • 如果输入参数x为空,则返回NaN

示例

SELECT avg(x) FROM values('x Int8', 0, 1, 2, 3, 4, 5);
┌─avg(x)─┐
│ 2.5    │
└────────┘
CREATE table test (t UInt8) ENGINE = Memory;
SELECT avg(t) FROM test;
┌─avg(x)─┐
│ nan    │
└────────┘

# quantile

计算数值数据序列的近似分位数。该函数使用最多8192个水塘抽样和随机数生成器进行抽样。结果是非确定性的。要获得精确的分位数,请使用quantileExact函数。

在查询中使用多个具有不同水平的quantile*函数时,内部状态不会合并(即,查询的效率低于可能的效率)。在这种情况下,请使用quantiles函数。

请注意,对于空的数值序列,quantile将返回NaN,但其quantile*变体将返回NaN或序列类型的默认值,具体取决于变体。

quantile(level)(expr)

别名:

median

参数

  • level — 分位数的水平。可选参数。常量浮点数,范围从0到1。我们建议使用level值在[0.01, 0.99]范围内。默认值:0.5。在level=0.5时,函数计算中位数。
  • expr — 对列值进行表达式,结果为数值数据类型、日期或日期时间。

返回值

  • 指定水平的近似分位数。
  • 类型:
    • 数值数据类型输入的Float64。
    • 如果输入值具有Date类型,则为Date
    • 如果输入值具有DateTime类型,则为DateTime

示例

CREATE table test (t UInt8) ENGINE = Memory;
INSERT INTO test values(1)(1)(2)(3)
SELECT quantile(t) FROM test
┌─quantile(t)───┐
│ 1.5           │
└───────────────┘

# entropy

  • 计算一列值的香农熵。
  • 语法
    • entropy(val)
  • 参数
    • val — 任意类型的值的列。
  • 返回值
    • 香农熵。
    • 类型:Float64。
  • 示例
    • 查询:
    CREATE TABLE entropy (`vals` UInt32,`strings` String) ENGINE = Memory;
    INSERT INTO entropy VALUES (1, 'A'), (1, 'A'), (1,'A'), (1,'A'), (2,'B'), (2,'B'), (2,'C'), (2,'D');
    SELECT entropy(vals), entropy(strings) FROM entropy;
    
    • 结果:
    ┌─entropy(vals)─┬─entropy(strings)─┐│ 11.75 │└───────────────┴──────────────────┘