从同一组中选择平均值,在另一组中选择多个列的最大值

ercv8c1e  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(537)

我很难为一组相同的fix\u id值选择一个平均值,而另一列的最大值最终有人帮了我,我得到了这段代码

  1. select fix_id
  2. , timestamp
  3. , avg(age)
  4. from t
  5. where age > 0
  6. and timestamp =
  7. (select max(t2.timestamp)
  8. from t t2
  9. where t2.fix_id = t.fix_id)
  10. group by fix_id;

但是,我需要为几个列选择相同的方法avg值,我想知道是否有一种方法可以在一个查询中实现。我能做到

  1. avg(age),avg(height)

但由于我跳过了年龄值为0的行,列高将丢失这些行。

rfbsl7qr

rfbsl7qr1#

使用条件聚合:

  1. select fix_id, timestamp,
  2. avg(case when age > 0 then age end) as avg_age,
  3. avg(height) as avg_height
  4. from t
  5. where timestamp = (select max(t2.timestamp) from t t2 where t2.fix_id = t.fix_id)
  6. group by fix_id;

相关问题