SQL在同一列中的多个条件下选择

时间:2018-10-18 10:20:44

标签: sql

我要根据同一方“党”中的不同标准选择美国总统的名字。

我想要实现的是选择为自己的政党服务最多的总统的姓名。我能够找到每个政党的最长任期,并选择在这些年任职的总统的姓名,但是每个政党都不会遵守该标准。请参阅下面的代码:

select max(valdate) 
  from CORE_TOTEM.TOTEM_MONTHEND_COVERAGE
 where valdate<=sysdate 
   and valdate>= sysdate-5

有人可以帮助我结合各方提出的不同最高服务年限的标准吗?提前致谢! DB Snapshot Current Results Desired Results

3 个答案:

答案 0 :(得分:0)

欢迎堆栈溢出。

尝试以下操作:

select name, party, years_served
from president p
where not exists
(
    select 1
    from president as more_years_in_party
    where more_years_in_party.party=p.party and more_years_in_party.years_served > p.years_served
)
order by years_served desc

答案 1 :(得分:0)

您可以尝试以下方法:

select name, party, years_served
from president r
where r.years_served = (select max(years_served) from president p where p.party=r.party);

这意味着如果总统在其政党中任职年限最长,则选择总统。 rp只是别名

答案 2 :(得分:0)

如果您需要根据(聚会,年份服务)对的相等性进行过滤,则类似

WHERE (party, years_served) IN (SELECT party, max(...) FROM  ...)

是您所需要的,但是您的引擎可能不支持这种语法。但是,以上内容等同于普通的简单连接

select name, party, years_served
from president
natural join
(select party, max(years_served) as years_served from president group by party)

应该这样做。