gpt4 book ai didi

sql - 用单个值和总和替换值集

转载 作者:行者123 更新时间:2023-11-29 12:44:34 24 4
gpt4 key购买 nike

我有a table如下:

id  group1  group2  is_bar  amount
1 a bar1 true 100
2 a bar2 true 200
3 a baz false 150
4 a baz false 250
5 b bar1 true 50

每次 is_bar 为真时,我想替换 group2 中的值并对 amount 求和,得到:

group1  group2  amount
a bar 300
a baz 400
b bar 50

我目前使用子查询执行此操作,然后按表中的所有其他列 进行分组!但这对我来说似乎有点菜鸟:

SELECT group1, group2, sum(amount) FROM 
(
SELECT group1,
CASE WHEN is_bar THEN 'bar' ELSE group2 END as group2,
amount
FROM foo
) new_foo
GROUP BY group1, group2
ORDER BY group1, group2;

有聪明人解决这个问题吗?

最佳答案

我相信这应该有效:

SELECT
group1
, CASE WHEN is_bar THEN 'bar' ELSE group2 END as group2
, SUM(AMOUNT)
FROM foo
GROUP BY group1, CASE WHEN is_bar THEN 'bar' ELSE group2 END

正如@Patrick 在评论中提到的,您可以将 GROUP BY 中非常长的条件替换为 GROUP BY 1, 2

这将自动引用 SELECT 语句中的第 1 列和第 2 列(第一列和第二列),并且查询将具有相同的输出。但是,如果您添加不同的列作为第一列,则必须通过更改或添加表示第一列的数字/条件来确保 GROUP BY 仍按预期工作。

关于sql - 用单个值和总和替换值集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31703212/

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