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

Php 从同一组中选择平均值,在另一组中选择多个列的最大值,php,mysql,sql,join,select,Php,Mysql,Sql,Join,Select,我一直在努力为一组相同的fix_id值选择一个平均值,而另一列上的最大值最终有人帮了我,我最终得到了这段代码 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; 这正是它应该做

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

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值,我想知道是否有一种方法可以在一个查询中实现这一点。我可以做平均(年龄),平均(身高)

avg(age),avg(height)
但由于我跳过了年龄列高度值为0的行,因此将丢失这些行。

使用条件聚合:

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