例如,我有一个包含三列的记录集:
ID,周,计数
- 1,1,10;
- 1,2,20;
- 1,3,30;
- 2,1,3;
- 2,2,2;
- 2,3,15;
我想要的只是平均计数> 10的ID的数据。然后,在这个示例数据中,将选择id = 1的数据。
谢谢。
SELECT id FROM YourTable GROUP BY id HAVING AVG(count) > 10
SELECT *
FROM YourTable
WHERE id IN (SELECT id FROM YourTable GROUP BY id HAVING AVG(count) > 10)
或者,如果您使用的是访问数据库(无论出于何种原因,IN 恰好具有可怕的性能),您可以使用:
SELECT t2.*
FROM (SELECT id FROM YourTable GROUP BY id HAVING AVG(count) > 10) AS t1
INNER JOIN YourTable AS t2 ON t1.id = t2.id
在大多数数据库中,您还可以使用窗口函数执行此操作:
select t.*
from (select t.*, avg(count) over (partition by id) as avgcount
from t
) t
where avgcount > 10