GROUP BY子句标识查询的分组列。必须在查询中使用标准计算聚合函数(SUM、AVG和COUNT)时声明分组列。

  1. GROUP BY expression [, ...]
  • GROUP BY中列或表达式列表必须匹配查询列表中的非聚合表达式的列。

    例如,考虑以下简单查询中,查询列表包含两个聚合表达式。第一个聚合表达式使用SUM函数,第二个聚合表达式使用COUNT函数。必须将其余两个列(LISTID 和 EVENTID)声明为分组列。

    1. select listid, eventid, sum(pricepaid) as revenue,
    2. count(qtysold) as numtix
    3. from sales
    4. group by listid, eventid
    5. order by 3, 4, 2, 1
    6. limit 5;
    7. listid | eventid | revenue | numtix
    8. -------+---------+---------+--------
    9. 89397| 47 | 20.00 | 1
    10. 106590 | 76 | 20.00 | 1
    11. 124683 | 393 | 20.00 | 1
    12. 103037 | 403 | 20.00 | 1
    13. 147685 | 429 | 20.00 | 1
    14. (5 rows)
  • GROUP BY子句中的表达式也可以使用序号来引用选择列表。

    例如,上一个示例的缩略形式

    1. select listid, eventid, sum(pricepaid) as revenue,
    2. count(qtysold) as numtix
    3. from sales
    4. group by 1,2
    5. order by 3, 4, 2, 1
    6. limit 5;
    7. listid | eventid | revenue | numtix
    8. -------+---------+---------+--------
    9. 89397 | 47 | 20.00 | 1
    10. 106590 | 76 | 20.00 | 1
    11. 124683 | 393 | 20.00 | 1
    12. 103037 | 403 | 20.00 | 1
    13. 147685 | 429 | 20.00 | 1
    14. (5 rows)