📜  按两列 postgres 分组 - SQL (1)

📅  最后修改于: 2023-12-03 15:39:47.986000             🧑  作者: Mango

按两列 postgres 分组 - SQL

在 Postgres 数据库中,按两列分组是一种常见的数据操作需求。本文介绍了如何在 SQL 中按两列对数据进行分组。

查询语法

按照两列进行分组的 SQL 查询语法,如下所示:

SELECT col1, col2, <agg_func>(col3)
FROM table_name
GROUP BY col1, col2;

其中:

  • col1col2:需要按这两列进行分组;
  • <agg_func>(col3):对 col3 列进行聚合计算,<agg_func> 表示聚合函数,如 SUMAVG 等;
  • table_name:需要查询的表名。
示例
创建测试数据表

首先,我们需要创建一张测试数据表 sales,包含 regionproductyearsales 四个字段。

CREATE TABLE sales (
    region TEXT,
    product TEXT,
    year INT,
    sales NUMERIC
);
插入测试数据

由于本文只是为了演示 SQL 语法,所以我们使用一些虚构的数据进行测试。

INSERT INTO sales VALUES ('North', 'Product A', 2021, 10000);
INSERT INTO sales VALUES ('North', 'Product A', 2020, 8000);
INSERT INTO sales VALUES ('North', 'Product B', 2021, 15000);
INSERT INTO sales VALUES ('North', 'Product B', 2020, 12000);
INSERT INTO sales VALUES ('South', 'Product A', 2021, 9000);
INSERT INTO sales VALUES ('South', 'Product A', 2020, 7500);
INSERT INTO sales VALUES ('South', 'Product B', 2021, 12000);
INSERT INTO sales VALUES ('South', 'Product B', 2020, 10000);
查询示例

接下来,我们按照 regionproduct 两列进行分组,并计算 sales 列的总和。

SELECT region, product, SUM(sales)
FROM sales
GROUP BY region, product;

执行此查询,将得到以下结果:

| region | product | sum | | ------ | ---------- | --- | | North | Product A | 18000 | | North | Product B | 27000 | | South | Product A | 16500 | | South | Product B | 22000 |

这是按照 regionproduct 两列进行分组后,计算 sales 列总和的结果。

总结

按两列分组是 SQL 中的一种常见操作需求。本文介绍了如何使用 Postgres 数据库中的 SQL 语法对数据进行分组,并给出了一个示例。如果你也需要按两列分组的数据,请参考本文的示例进行操作。