对于查询,我需要选择“平均最小值”的记录。所以理论上我应该做类似的事情
select min(avg(x)) from tableA;
由于不支持嵌套聚合函数,我不确定如何实现这一点。我也尝试过子查询,但我永远无法让它工作,所以有人知道吗?伪代码就足够了,我不需要完整的解决方案。这就是为什么我自己使用伪代码而不提供我正在处理的数据的原因。
提前致谢!
编辑:因为需要提供示例/示例数据:
我有 3 个表格,我需要从中获取零件、员工和持续时间。我需要按零件和员工对查询进行分组,并且需要获得最短的平均持续时间。
SELECT p.part, e.Name, min(avg(s.duration)) as AvgDuration
FROM store s
JOIN parts p
ON p.PartId = s.PartId
JOIN employees e
ON e.EmployeeId = s.EmployeeId
GROUP BY p.PartNr, e.Name
ORDER BY PartNr;
我知道这是一个错误的查询,但这应该清楚我的目标。
基于 Gordon 的解决方案,
我有以下查询:
SELECT m.PartNr, m.Name, min(avg_duration) as Duration
FROM (
SELECT p.PartNr, e.Name, avg(s.Duration) as avg_duration
FROM Store s
JOIN parts p
ON p.PartId = s.PartId
JOIN employees e
ON e.EmployeeId = s.EmployeeId
GROUP BY p.PartNr, e.Name
) m
GROUP BY m.PartNr, m.Name;
但这样做的目的是为每个员工提供最低平均值,而只显示最低的员工。