【问题标题】:Select the latest year in a column using SQL query使用 SQL 查询在列中选择最近的年份
【发布时间】:2023-01-16 05:48:37
【问题描述】:

我有这样的数据框

Value. Date
A 08/08/2009
A 09/12/2021
A 05/10/2022
A 06/09/2022
A 07/08/2022

我需要像这样的输出

VALUE DATE
A 05/10/2022
A 06/09/2022
A 07/08/2022

我们必须打印最新的一年,所有月份的数据都出现在日期列中。请参考输出表。

我使用了 SQL 查询

从表中选择前 10 * 按(日期)DESC 排序;

max() 只选择一个日期,所以这对我没有帮助

但没有得到预期的答复。 有人可以帮我查询吗?

【问题讨论】:

  • 这个查询的输出是什么Select Top 10 * from table where Order by (Date) DESC;
  • 我使用相同的查询但没有给出预期的结果

标签: mysql sql


【解决方案1】:

您可以在子查询中使用 MAX,这将产生您在问题中显示的预期结果:

SELECT yourcolumn
FROM yourtable
WHERE 
YEAR(yourcolumn) = (SELECT MAX(YEAR(yourcolumn)) FROM yourtable);

最近的年份是 2022 年,所以子查询中的 MAX 会找到今年,整个查询将选择 2022 年的所有日期。

【讨论】:

  • 全扫描。慢的..
【解决方案2】:
SELECT *
FROM tablename
WHERE datecolumn >= (SELECT DATE_FORMAT(MAX(datecolumn), '%Y-01-01')
                     FROM tablename)

要改进此查询,您需要通过 datecolumn 建立索引(或者此列是表达式前缀)。

【讨论】:

  • 感谢您的解决方案!明白你的意思
猜你喜欢
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多