如何使用自定义列名创建新的SQL表并填充这些列

问题描述 投票:0回答:1

因此,我目前有一条SQL语句,该语句生成一个表中出现频率最高和出现频率最低的表。但是,此表有2行,其中包含行值和字段。我需要创建一个具有2列的最小值和最大值的自定义表格。然后有一行,每个都有一个值。这些列的值必须来自同一行。

(SELECT name, COUNT(name) AS frequency FROM firefighter_certifications GROUP BY name ORDER BY frequency DESC limit 1) UNION (SELECT name, COUNT(name) AS frequency FROM firefighter_certifications GROUP BY name ORDER BY frequency ASC limit 1);

因此,对于上面的查询,我需要在一行中显示最小值和最大值的名称。我还需要能够为生成的SQL查询定义新列的名称。

sql postgresql
1个回答
0
投票

使用窗口功能row_number(),尝试以下操作。如果多个名称具有相同的计数,则在查询中将row_number()替换为dense_rank()。这是demo

select 
  name,
  total
from
(
  select
    name,
    count(*) as total,
    row_number() over (order by count(*) desc) as hrnk,
    row_number() over (order by count(*)) as lrnk
  from firefighter_certifications
  group by
    name
) val
where hrnk = 1 or lrnk = 1
© www.soinside.com 2019 - 2024. All rights reserved.