gpt4 book ai didi

sql - 使用 PostgreSQL 中的一组值分组

转载 作者:行者123 更新时间:2023-11-29 14:16:25 25 4
gpt4 key购买 nike

我有一个产品表:

productid   product
1 A-110
2 B-110
3 C-400
4 D-401

orderditems表:

orderitemid productid qty
1 1 10
2 2 10
3 3 10
4 3 10
5 4 10

我可以根据产品分组:

select productid, sum(qty)
from ordereditems
group by productid

给出:

1    10
2 10
3 20
4 10

但是对于此查询,productid 1 & 2、3 & 4 是相同的。意思是我想看:

1 + 2   20
3 + 4 30

基本上,我希望查询了解 1 和 2 是同一组,而 3 和 4 是同一组。

我该怎么做?

编辑:产品 1 和 2、3 和 4 不一样。然而,他们属于同一个家族……我想看看我们每个家族的销售额是多少,而不是每个产品的销售额。这就是为什么期望的输出是:

1 + 2   20
3 + 4 30

最佳答案

一个 hacky 版本,如果你知道 1&2 是相同的,3&4 是相同的,而且只有这些是相同的。

select 
case
when productid in (1,2) then '1 + 2'
when productid in (3,4) then '3 + 4'
else productid
end as product_ids, sum(qty)
from ordereditems
group by
case
when productid in (1,2) then '1 + 2'
when productid in (3,4) then '3 + 4'
else productid
end

更好的方法是在数据库中记录两个产品相同。通过将重复的产品 (2,4) 链接到与 (1,3) 相同的产品,或者通过创建新的表系列等,并记录产品 1,2 与同一系列相关。

家庭

familyid name
1 1+2
2 3+4

扩展产品表

productid   product  familyid
1 A-110 1
2 B-110 1
3 C-400 2
4 D-401 2

然后你可以在家庭上分组

select f.name, sum(qty)
from ordereditems oi
inner join product p on oi.productid = p.productid
inner join family f on p.familyid = f.familyid
group by f.name

关于sql - 使用 PostgreSQL 中的一组值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47153388/

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