按条件求和sql

eyh26e7m  于 2021-08-01  发布在  Java
关注(0)|答案(2)|浏览(428)

[在此处输入图像描述][1]我无法正确设置sum函数。我需要为所有的d.denominazione\u区域相同的d.deceduti设置一个总和。我想这个案子会成功的,因为d.denominazione\u regioni是按字母顺序排列的,所以在d.denominazione\u regione改变之前的一个循环会成功。

select r.deceduti, d.sesso, d.eta, d.denominazione_regione, 
sum(case 
    when d.denominazione_regione=d.denominazione_regione*+1 
    then d.deceduti 
    end)
from DECEDUTI d 
 inner join RICOVERI r 
 on d.denominazione_regione=r.denominazione_regione
where d.anno='2015-2019'

在[1]中:https://i.stack.imgur.com/izvg0.png 我想把这些数据加起来
但在我得到[2]:https://i.stack.imgur.com/bbh8n.png

t2a7ltrp

t2a7ltrp1#

我认为你可以使用如下分析函数:

SELECT R.DECEDUTI,
       D.SESSO,
       D.ETA,
       D.DENOMINAZIONE_REGIONE,
       SUM(D.DECEDUTI) OVER (PARTITION BY D.DENOMINAZIONE_REGIONE)
  FROM DECEDUTI   D
 INNER JOIN RICOVERI   R
ON D.DENOMINAZIONE_REGIONE = R.DENOMINAZIONE_REGIONE
 WHERE D.ANNO = '2015-2019'
ljsrvy3e

ljsrvy3e2#

我需要为所有的d.denominazione\u区域相同的d.deceduti设置一个总和。
这听起来像一个分析函数:

select r.deceduti, d.sesso, d.eta, d.denominazione_regione, 
       sum(d.deceduti) over (partition by d.denominazione_regione)
from DECEDUTI d inner join
     RICOVERI r
     on d.denominazione_regione = r.denominazione_regione
where d.anno = '2015-2019';

根据您的评论,您可以使用条件聚合:

sum(case when d.sesso = 'Entrambi' AND d.eta = 'Qualsiasi' then d.deceduti else 0 end) over (partition by d.denominazione_regione)

相关问题