【问题标题】:SQL, select value from row with distinct attribute but max value of another attribute [duplicate]SQL,从具有不同属性但另一个属性的最大值的行中选择值[重复]
【发布时间】:2021-10-02 16:45:11
【问题描述】:

例如,我有这张桌子:

id name campagna valore
1 u1 1 22
2 u1 2 23
4 u2 1 223
5 u3 2 223

我会选择名称值为 unique(distinct) 但在具有相同名称的行之间具有 max(campagna) 的行。 例如我会:

name campagna valore
u1 2 23
u2 1 223
u3 2 223

我可以吗? 谢谢。

【问题讨论】:

  • 您使用的是什么 DBMS?

标签: sql max distinct


【解决方案1】:

您希望每个名称有一个结果行。为每个名称选择的行是该名称的最大大小写。

这通常使用解析函数来完成,例如:

select name, campagna, valore
from
(
  select t.*, max(campagna) over (partition by name) as max_campagna
  from mytable t
)
where campagna = max_campagna
order by name;

但也可以通过其他方法实现。例如:

select *
from mytable
where (name, campagna) in
(
  select name, max(campagna)
  from mytable
  group by name
)
order by name;

select *
from mytable t
where not exists
(
  select null
  from mytable t2
  where t2.name = t.name
  and t2.campagna > t.campagna
)
order by name;

【讨论】:

    猜你喜欢
    • 2021-03-29
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多