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