Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

聚合函数 行

聚合函数-统计

  • 统计数量

    COUNT(*)
    
    • 解释
      • 统计所有聚合列中 非NULL行 的数量
      • 等价于count(1)
    COUNT(column名)
    
    • 解释
      • 统计某一列中 非NULL行 的数量
      • 前面可以加DISTINCT 做去重
      • 可配合HAVING使用
        GROUP BY id
        HAVING COUNT(payment) > 20
        
  • 统计总量

    SUM(column名)
    
    • 解释
      • 计算所有聚合列中 非NULL行 的和
        • 对于无法计算的可能会出null
        • 可以用COALESCE(SUM(amount),0)保证至少是0
      • 前面可以加DISTINCT 做去重
      • 可配合HAVING使用
        GROUP BY id
        HAVING SUM(amount) > 20
        
  • 统计平均值

    AVG(column名)
    
    • 计算所有聚合列中 非NULL行 的和 再 除以这些列的数量
    • 可以对计算结果保留两位小数
      ::numeric(10,2)
      
  • 求最大和最小

    最大值/最小值
    MAX()/MAX()
    

聚合函数-拼接

  • 拼成一行字符串

    STRING_AGG(表达式, '分割符' ORDER BY 排序规则)
    
    • 解释
      • 表达式可由多个列组成
        column1 || '-' || column2 
        
      • 分隔符后面可加排序,指定以什么顺序拼接
    • 例子
      STRING_AGG (
          a.first_name || ' ' || a.last_name,
          ','
          ORDER BY
          a.first_name,
          a.last_name
      )
      
  • 拼成一个数组

    ARRAY_AGG(表达式 ORDER BY 排序规则)
    
    • 解释
      • 表达式可由多个列组成
      • 表达式后面可加排序,指定元素以什么顺序排列
    • 例子
      ARRAY_AGG (
          a.first_name || ' ' || a.last_name
          ORDER BY
          first_name
      )