php - 从每个组中选择一列中具有相同值而另一列中具有最大值的平均值
问题描述
我一直在努力寻找答案,但似乎没有人遇到与我类似的问题,所以我决定在这里发布。
我有一个包含 200 条记录的表,列中有重复值fix_id
,在列时间戳中,每条记录的值都在 1 到 5 之间,在最后一列中我得到了年龄值。
我喜欢为每个组选择具有相同 id 的fix_id
列,同时在时间戳列中保持最大值,年龄列的平均值,并且有一个棘手的问题是年龄列有时可以具有值 0,在这种情况下,我喜欢跳过这个值。
fix_id timestamp age
10 2 0
10 2 2
10 4 0
10 4 1
10 4 3
5 4 2
5 4 4
5 3 10
所以从这张表中,我想得到这个结果
fix_id timestamp age
10 4 2
5 4 3
因此,如果年龄列中有 0,我不想在计算平均值时包含它。
这可能吗?
解决方案
一种方法是带有过滤的聚合查询:
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;
推荐阅读
- javascript - navigator 在 React Native 中同时出现导航和容器道具错误
- python - 如何在 jupyter notebook 中触发保存命令?
- java - 如何将缓存配置为指向本地 ehcache 而不是继承的?
- javascript - 如何从 Javascript/React 发送 AJAX 请求并在 Python REST API 中接收数据
- python - Python tkinter askopenfilename 为我工作,现在没有响应
- android - 如何在 CardView 中移动 ImageView 和 TextView?
- javascript - 结合正则表达式模式javascript
- python - 在 PYCharm 和 Spyder IDE 中运行相同代码时的不同结果
- javascript - 如何使用多个 setInterval()?
- r - 从R中的向量中的文本字符串中提取不同长度的数字