【问题标题】:SQL Select Sets / Years 1-10 of ResultsSQL 选择集/第 1-10 年的结果
【发布时间】:2012-12-05 18:19:43
【问题描述】:

我总是只需要结果集中最近 10 年的数据。这些年总会有多个记录,所以我不能只提取前 10 条记录。我怎样才能:选择集 1,选择集 2... 到集 10,并且只显示这 10 年的数据而不提取前几年的数据?

Year    Quarter    Quarterly_yield
2012    1         8.41
2012    2        -0.71
2011    3         0.03
2011    4         3.43
2010    1         8.41
2010    2        -0.71
2009    3         0.03
2009    4         3.43
2008    1         8.41
2008    2        -0.71
2007    3         0.03
2007    4         3.43
2006    1         8.41
2006    2        -0.71
2005    3         0.03
2005    4         3.43
2004    1         8.41
2004    2        -0.71
2003    3         0.03
2003    4         3.43
2002    1         8.41
2002    2        -0.71
2001    3         0.03
2001    4         3.43
2000    1         8.41
2000    2        -0.71

【问题讨论】:

  • 您正在运行的 SQL 查询是什么?

标签: mysql sql where set


【解决方案1】:

你可以这样做:

SELECT * FROM table WHERE year IN 
                     (SELECT year FROM table ORDER BY year DESC LIMIT 10); 

这个查询可以这样解释:

  1. 内部查询 - 从table 中选择过去 10 年
  2. 外部查询 - 从table 中选择所有列,其中年份在内部查询结果中

【讨论】:

  • 在示例中,您可以看到这不是过去 10 年。可能是 20 年。
  • 起初我在考虑您的问题,但后来我意识到问题是“最近 10 年”而不是“10 年前”
【解决方案2】:

怎么样

SELECT *
FROM table
WHERE year IN 
  (
   SELECT year
   FROM table
   ORDER BY Year DESC
   LIMIT 10
  ) 

这会选择最近的 10 年

SELECT year
FROM table
ORDER BY Year DESC
LIMIT 10

然后你选择那些年份的每条记录

【讨论】:

    【解决方案3】:
    select * from t 
    where
    (year>(select max(year) from t)-10)
    order by year desc, quarter desc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多