📅  最后修改于: 2023-12-03 15:38:00.785000             🧑  作者: Mango
在 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 中实现这个目标的简单和直接的方法之一。