我有三列
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
子句中定义分区