我一直在努力为一组相同的 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 的行,因此这些行将丢失。
1 回答
撒科打诨
TA贡献1934条经验 获得超2个赞
使用条件聚合:
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;
- 1 回答
- 0 关注
- 90 浏览
添加回答
举报
0/150
提交
取消