如何从列中获取最大年份并保留其余部分?

Posted

技术标签:

【中文标题】如何从列中获取最大年份并保留其余部分?【英文标题】:How to get max year from a column and keep the rest? 【发布时间】:2021-06-15 00:02:33 【问题描述】:

对不起,如果这很明显,但我对 SQL 真的很陌生。 我的数据是这样的

Policy Email Years
Pol1 John@gmail 1
Pol1 John@gmail 1
Pol1 Jo@aol. 5
Pol1 Jo@aol. 6

我如何获得它来提取每项政策的数据,但只提取每项政策的最高年份的数据。所以第 2 行和第 4 行

【问题讨论】:

【参考方案1】:

我看不到您使用的是什么版本的 SQL,但受这篇文章的启发: SQL Query to get column values that correspond with MAX value of another column?

这是我写的:

select  core.policy, 
        core.email, 
        core.years
From ExamplePolicies core
Join (SELECT    maxYears = MAX(years),
                policy
      FROM ExamplePolicies 
      GROUP BY policy) subq
      on core.years = subq.maxYears

在这里测试:

https://sqliteonline.com/

【讨论】:

【参考方案2】:
SELECT Policy,max(Year) FROM TABLE GROUP BY Policy

此查询将按策略对记录进行分组,并从每个组中选择 MAX of year。如果您只需要 Policy 和 Year 那么上面的查询应该没问题。因为您无法选择 group by 查询中的任何其他列。

如果您还想要结果中的其他列,那么您可以尝试以下查询。

SELECT 
 T1.* 
FROM 
 TABLE T1 
INNER JOIN 
 ( SELECT Policy,max(Year) as [MaxYear] FROM TABLE GROUP BY Policy ) T2
ON 
 T1.Polcy = T2.Policy AND T1.Year = T2.MaxYear

【讨论】:

【参考方案3】:

关联子查询是一种典型的方法:

select t.*
from t
where t.year = (select max(t2.year) from t t2 where t2.policy = t.policy);

【讨论】:

以上是关于如何从列中获取最大年份并保留其余部分?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取熊猫数据框中的行,列中具有最大值并保留原始索引?

从列中提取日期并在 R 中缺少年份时添加年份

如何从列标题菜单中删除列

从列中查找最大值并选择它们的行

选择总和列,然后从列中获取最小值

火花数据集:如何从列中获取唯一值的出现次数