PostgreSQL - max(count()) 聚合与分组依据
PostgreSQL - max(count()) agregation with group by
我有一个 table,其中包含独特的交易以及交易年份和执行交易的员工。我需要找到每年交易最多的员工。
我需要一个 table 每年,员工在那一年进行最多交易,以及他们在那一年进行的交易数量。
这是我在不产生错误的情况下所能得到的最接近的结果。我无法在不产生聚合错误的情况下 select 员工。
select year, max(num_trans)
from (select year, employee, count(trans_id) as num_trans
from transactions
group by year, employee) as x
group by year
我很好奇如何解决这个问题。
使用distinct on
:
select distinct on (year) year, employee, count(*) as num_trans
from transactions
group by year, employee
order by year, count(*) desc;
distinct on
是对标准 SQL 的方便的 Postgres 扩展,它将第一行保留在一组行中。这些组由 distinct on
键定义。第一行由 order by
.
决定
我有一个 table,其中包含独特的交易以及交易年份和执行交易的员工。我需要找到每年交易最多的员工。
我需要一个 table 每年,员工在那一年进行最多交易,以及他们在那一年进行的交易数量。 这是我在不产生错误的情况下所能得到的最接近的结果。我无法在不产生聚合错误的情况下 select 员工。
select year, max(num_trans)
from (select year, employee, count(trans_id) as num_trans
from transactions
group by year, employee) as x
group by year
我很好奇如何解决这个问题。
使用distinct on
:
select distinct on (year) year, employee, count(*) as num_trans
from transactions
group by year, employee
order by year, count(*) desc;
distinct on
是对标准 SQL 的方便的 Postgres 扩展,它将第一行保留在一组行中。这些组由 distinct on
键定义。第一行由 order by
.