PostgreSQL — 如何从每一列中找到最大值?

潘查姆克

我是 SQL 新手,所以这可能是一个微不足道的问题。我有一个包含如下数据的表:

State: varchar(30)
Year_06: varchar(10)
Year_07: varchar(10)
Year_08: varchar(10)
状态 年_06 年_07 年_08
状态_1 991 01 37
状态_2 341 11 57
状态_3 551 41 不适用

现在,我必须找到每年各州的最大值。所以,对于Year_06,答案是State_1,依此类推。

我尝试使用降序对输出进行排序

SELECT * from table_name order BY Year_06::int desc;

这显示了这样的输出:

状态 年_06 年_07 年_08
状态_1 991 01 37
状态_3 551 41 不适用
状态_2 341 11 57

但是,我想显示每年每个州的最高值。我怎样才能达到这个结果?

戈登·利诺夫

我会反转并重新聚合:

select distinct on (v.year) v.year, v.val, t.state
from t cross join lateral
     (values ('Year_06', year_06),
             ('Year_07', year_07),
             ('Year_08', year_08)
     ) v(year, val)
order by v.year, v.val desc;

是一个 db<>fiddle。

以上假设列中的值是数字,这NA实际上意味着NULL. 如果值是字符串,则需要将它们作为字符串进行排序或将它们转换为数字,例如:

select distinct on (v.year) v.year, v.val, t.state
from t cross join lateral
     (values ('Year_06', year_06),
             ('Year_07', year_07),
             ('Year_08', year_08)
     ) v(year, val)
where v.val <> 'NA'
order by v.year, v.val::int desc;

        

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PostgreSQL选择在一列中具有最大值的所有行

使用一列的最大值更新更新Postgresql

在熊猫中找到一列的最大值

如何在postgres中找到与同一列相同的列的最大值和值?

计算PostgreSQL中另一列中具有公共值的列值的最大值

如何找到矩阵中每一列的绝对值之和的最大值

如何在Hive中找到一列的最大值?

在数据框的每一列中找到3个最大值,并获取索引号python

如何使postgresql中的每一列分别唯一?

如何获得每一列的最大值?

从一列中找到最大值,然后根据该最大值填充另一列

如何在 PostgreSQL 中找到一个值保持在同一状态的最大时间差?

如何从列中找到最大值

如何从表中找到最大值和最小值以及另一列值?

如何获取熊猫数据框列的最大值,然后在另一列中找到对应的值?

在与另一列对应的列中找到最大值和最小值

如何在另一列中找到一个单元格的最大值?

在python中找到每一行的最大值

在一列中找到最大值,但仅在其他两列匹配时

熊猫在一列中找到最大值,然后从另一行中显示

在矩阵的每一行中找到所有最大值的行/列

使用VBA在某些列的每一行中找到最大值

在R的3列中找到每一行的最大值

在熊猫的另一列中找到每个数字条纹的最大值

在同一列中找到多个元素的最大值

熊猫:在包含列表的一列中找到最大值

在二维列表的一列中找到最大值的每个索引

找到最小和最大值在阵列的每一列

在未明确命名的情况下找到HIVE中每一列的最大值