有没有一种方法可以根据另一个DISTINCT列选择一列的总和,而只按第三列(日期)分组



我有三列

year|money|id2020 100 012020 100 012019年50 022018年50 032020 40 04

结果应为

年度|资金|总人数2020|240|4

**由于前两个ID相同,我在下面尝试过

从表中选择年份、金额(money(、计数(Distinct id(按年度分组

但结果显示4个人,这是正确但错误的金额,因为它正在计算所有的钱

您可以聚合,然后再次聚合:

select max(year), sum(money), count(*)
from (select distinct year, money, id
from t
) t;

您可以使用SUM()COUNT(DISTINCT x)

例如:

select 
year,
sum(money) as money,
(select count(distinct id) from t) as total_people
from t
where year = 2020
group by year;

结果:

YEAR  MONEY  TOTAL_PEOPLE 
----- ------ ------------ 
2020  240    4            

请参阅db<gt;不停摆弄

不是性能最好的,但如果您希望避免派生表,可以执行

select distinct 
max(year) over (), 
sum(money) over (), 
count(*) over ()
from t
group by year, money, id;

如果你想按年份分组,你可以在over子句中定义分区

相关内容

  • 没有找到相关文章

最新更新