SQL-如何获取每行的总和并在条件存在时将其放入,如果不存在则将其放入最后一行
Posted
技术标签:
【中文标题】SQL-如何获取每行的总和并在条件存在时将其放入,如果不存在则将其放入最后一行【英文标题】:SQL- How to get the sum of each row and put it if condition exists, if does not exists put it in the last line 【发布时间】:2020-07-16 20:22:09 【问题描述】:我有一张这样的桌子(名字还有很多)
name Class Amount
Alex C1 100
Brenda AB 50
Brenda C1 100
Alex AB 200
我想要以下输出,对每个名称求和,但仅当列 Class 等于 C1 或没有 C1 时才将其放在名称的最后一条记录中。
例如。 Alex 的总和是 300(100+200),而 Brenda 的总和是 150(100+50),Alex 在第一行有 C1,所以总和放在那一行而不是最后一行,brenda 没有C1 类,所以总和在 Brenda 的最后一行。
像这样:
name Class Amount Sum
Alex C1 100 300
Brenda AB 50 0
Brenda AB 100 150
Alex AB 200 0
知道如何在 SQL 中执行此操作吗? (Access 或 mysql)
感谢和问候
【问题讨论】:
【参考方案1】:您可以在 MySQL 中使用窗口函数:
select t.*,
(case when row_number() over (partition by name order by (class = 'C1') desc, amount desc) = 1
then sum(amount) over (partition by name)
else 0
end) as sum_amount
from t;
【讨论】:
以上是关于SQL-如何获取每行的总和并在条件存在时将其放入,如果不存在则将其放入最后一行的主要内容,如果未能解决你的问题,请参考以下文章
用于捕获进程 ID 并在存在时将其终止的 Shell 脚本[重复]
在嵌套for循环内,打印字符串“。”并在满足条件时将其替换为其他字符。 MOOC Java Week 10'Dungeon'