将 TOP 3 放入单独的列中?
Putting TOP 3 into separate columns?
假设有一个 table 列 animals
:
-- animal --
dog
dog
dog
giraffe
cat
cat
mouse
mouse
elephant
根据出现次数最多的 TOP 3 动物创建结果集的最佳方法是什么?它有 3 个单独的列,每个动物 1 个。
结果集:
-- animal 1 -- animal 2 -- animal 3 --
dog cat mouse
您可以使用条件聚合:
select max(case when seqnum = 1 then animal end) as animal_1,
max(case when seqnum = 2 then animal end) as animal_2,
max(case when seqnum = 3 then animal end) as animal_3
from (select animal, count(*) as cnt, row_number() over (order by count(*) desc) as seqnum
from t
group by animal
) a
假设有一个 table 列 animals
:
-- animal --
dog
dog
dog
giraffe
cat
cat
mouse
mouse
elephant
根据出现次数最多的 TOP 3 动物创建结果集的最佳方法是什么?它有 3 个单独的列,每个动物 1 个。
结果集:
-- animal 1 -- animal 2 -- animal 3 --
dog cat mouse
您可以使用条件聚合:
select max(case when seqnum = 1 then animal end) as animal_1,
max(case when seqnum = 2 then animal end) as animal_2,
max(case when seqnum = 3 then animal end) as animal_3
from (select animal, count(*) as cnt, row_number() over (order by count(*) desc) as seqnum
from t
group by animal
) a