因此,我目前有一条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查询定义新列的名称。
使用窗口功能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