从一组相同的组中选择平均值,另一组的最大值用于几列

我一直在努力为一组相同的 fix_ids 值选择一个平均值,在另一列上有最大值,最终有人帮助了我,我得到了这段代码


select fix_id

     , timestamp

     , avg(age)

  from t

 where age > 0 

   and timestamp = 

  (select max(t2.timestamp) 

    from t t2 

   where t2.fix_id = t.fix_id)

group by fix_id;

这完全符合预期,但是,我需要为多个列选择相同的平均值,我想知道是否有一种方法可以在一个查询中执行此操作。我可以


avg(age),avg(height)

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


守候你守候我
浏览 103回答 1
1回答

撒科打诨

使用条件聚合:select fix_id, timestamp,       avg(case when age > 0 then age end) as avg_age,       avg(height) as avg_heightfrom twhere timestamp = (select max(t2.timestamp) from t t2 where t2.fix_id = t.fix_id)group by fix_id;
打开App,查看更多内容
随时随地看视频慕课网APP