【问题标题】:Apply aggregate function on subset of rows对行子集应用聚合函数
【发布时间】:2012-12-20 00:19:23
【问题描述】:

我有一张表,我想计算一列的平均值,但只计算最后 10 行。

SELECT AVG(columnName) as avg FROM tableName

我不能直接应用 top 因为这个查询只返回一行。我需要一种方法来获取最新的 10 行并对它们进行平均。

【问题讨论】:

  • 取适当子查询的平均值(顺便说一句,“最后十行”是什么意思?数据库不一定具有固有的行顺序感)。是什么阻止了你?
  • 您使用的是哪个 RDBMS?

标签: sql sql-server aggregate-functions average


【解决方案1】:

试试这个:

SELECT AVG(columnName) FROM
(SELECT TOP 10 columnName FROM tableName ORDER BY ColumnWhichHoldsOrder DESC) A

【讨论】:

    【解决方案2】:
    select avg(columnName)
    from (
       select columnName, 
              row_number() over (order by some column desc) as rn
       from tableName
    ) t
    where rn <= 10;
    

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 1970-01-01
      相关资源
      最近更新 更多