gpt4 book ai didi

sql - 每个唯一 ID 一个值的 Postgres 总和

转载 作者:行者123 更新时间:2023-11-29 13:22:49 24 4
gpt4 key购买 nike

我必须从 column2 中获取值的总和,但我应该只为每个 ID 计算一次。例如对于下表,我需要 5 + 10 + 7 而不是 5 + 5 + 10 + 7

id column1 column2
1 value1 5
1 value1 5
2 value1 10
3 value1 7

后者是我通过以下查询获得的,但我不知道如何调整它以获得第一个总和。我是否应该像选择所有不同的行一样预先过滤表格?

SELECT column1, sum(column2) FROM table group by column1;

最佳答案

创建自定义聚合:

CREATE OR REPLACE FUNCTION sum_func (
double precision, pg_catalog.anyelement, double precision
)
RETURNS double precision AS
$body$
SELECT case when $3 is not null then COALESCE($1, 0) + $3 else $1 end
$body$
LANGUAGE 'sql';

CREATE AGGREGATE dist_sum (
pg_catalog."any",
double precision)
(
SFUNC = sum_func,
STYPE = float8
);

然后像这样计算不同的总和:

select dist_sum(distinct id, column2)
from table

SQLFiddle

关于sql - 每个唯一 ID 一个值的 Postgres 总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38770787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com