sql-如何获取每行的总和,如果条件存在,将其放入最后一行,如果条件不存在,将其放入最后一行

lrl1mhuk  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(304)

我有一张这样的table(还有很多名字)

name    Class Amount
Alex    C1     100
Brenda  AB     50        
Brenda  C1     100         
Alex    AB     200

我想要下面的输出,求每个名称的总和,但仅当column class等于c1或者如果没有c1,则将其放入名称的最后一个记录中。
alex的和是300(100+200),而brenda的和是150(100+50),alex在第一行有c1,所以把和放在那一行,而不是最后一行,brenda没有´我们没有c1类,所以总和在布伦达的最后一行。
这样地:

name    Class Amount   Sum
Alex    C1     100     300
Brenda  AB     50       0
Brenda  AB     100     150    
Alex    AB     200      0

你知道怎么用sql吗(access或mysql)
谢谢和问候

x4shl7ld

x4shl7ld1#

您可以在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;

相关问题