📜  如何使用 group by postgres 组合 diff colmun 值 - SQL (1)

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

如何使用 GROUP BY 在 PostgreSQL 中组合不同列的值

在 PostgreSQL 中,GROUP BY 是一个非常有用的操作,可以将数据按某列进行分组并进行聚合计算。但是,如果我们想将不同的列的值组合在一起呢?本文将向您展示如何使用 PostgreSQL 中的 GROUP BY 操作来实现这一目标。

语法

要将不同列的值组合在一起,我们需要使用与常规 GROUP BY 操作类似的语法。假设我们有以下表格:

CREATE TABLE my_table (
    id serial primary key,
    name varchar,
    category varchar,
    value integer
);

INSERT INTO my_table (name, category, value)
VALUES
    ('Alice', 'A', 1),
    ('Bob', 'A', 2),
    ('Charlie', 'B', 3),
    ('Dave', 'B', 4);

我们可以使用以下语法将“名称”和“类别”列的值组合在一起:

SELECT name || ' - ' || category as name_category,
       SUM(value) as total
FROM my_table
GROUP BY name_category;

注:文中的语法示例是在 PostgreSQL 9.0 版本中测试的。

说明

上面的查询将数据按“名称”和“类别”列的组合值进行分组,并返回每个组的“值”列的总和。但我们必须使用 || 运算符将这些列的值组合在一起,以便将它们作为唯一的列名传递给 GROUP BY 子句。

在 SELECT 子句中,可以使用任何其他聚合函数来计算各种其他统计量,例如 AVG、COUNT、MIN 或 MAX。

结果

这将返回以下结果:

name_category | total -----------------+------ Alice - A | 1 Bob - A | 2 Charlie - B | 3 Dave - B | 4

对象

GROUP BY 操作仅适用于表格数据。在 PostgreSQL 中,视图、临时表和其他包含查询结果的对象都可以视为表格数据。在这种情况下,您可以使用相同的 GROUP BY 语法将结果分组成一组。

结论

有了 GROUP BY 操作,我们可以将不同列的值组合在一起,并在查询结果中返回它们。虽然我们必须使用 || 运算符将这些列的值组合在一起,但这是在 PostgreSQL 中实现这个目标的简单和直接的方法之一。