select s.attr1, s.attr2
from table1 s
where s.primarykey in
    (select g.primarykey
    from table2 g
    group by g.primarykey
    having avg(g.numattr) > 80)
group by s.attr1
having min(s.attr3)
order by (s.attr2);


该查询应该在表2中检查平均numattr> 80,然后为满足该条件的主键,为每个attr1选择attr3中的最小值,然后按attr2对其进行排序。我得到的结果是没有选择最小值,而且我不确定为什么。

最佳答案

您需要将MIN移到SELECT才能将其放入结果中。另外,您需要按attr1attr2进行分组。您可以尝试以下方法:

SELECT s.attr1, s.attr2, min(s.attr3)
FROM table1 s
WHERE s.primarykey IN
    (SELECT g.primarykey
    FROM table2 g
    GROUP BY g.primarykey
    HAVING avg(g.numattr) > 80)
GROUP BY s.attr1, s.attr2
ORDER BY s.attr2;

10-08 12:40