2013-05-06 2 views
0

예, 나는 세 개의 열이있는 레코드 집합이 있습니다, 계산SQL이 그룹의 일부 통계를 기반으로 레코드 그룹을 선택하는 방법은 무엇입니까?

ID, 주

  • 1,1,10;
  • 1,2,20;
  • 1,3,30;
  • 2,1,3;
  • 2,2,2;
  • 2,3,15;

내가 원하는 것은 평균 계수가 10보다 큰 ID의 데이터입니다. 그런 다음이 예제 데이터에서 id = 1의 데이터가 선택됩니다.

감사합니다.

+0

SELECT ID FROM YourTable GROUP BY ID (평균)> 10 – realnumber3012

+0

@ realnumber3012 답변으로 게시 – peterm

답변

0
SELECT id FROM YourTable GROUP BY id HAVING AVG(count) > 10 
+0

"그룹"에 의해 ID 만 선택되지만이 ID의 레코드는 선택되지 않습니다. – user2356447

+0

네 맞아. 목록 ID가 있습니다. 운영자 을 사용하고 ID별로 데이터를 가져옵니다. – realnumber3012

0
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 
0

, 당신은이 작업을 수행 할 수 있습니다

select t.* 
from (select t.*, avg(count) over (partition by id) as avgcount 
     from t 
    ) t 
where avgcount > 10 
+0

RDBMS SQL SERVER 또는 ORACLE 인 경우. 당신은 쿼리가 작동합니다. 그리고 여기 하나의 스캔 테이블. – realnumber3012

+0

@ realnumber3012 . . SQL Server 2012, Oracle, Postgres (많은 데이터베이스가 Postgres를 기반으로 함) 및 DB2의 모든 지원 창 기능을 지원합니다. –

+0

감사합니다. 나는 명심할 것이다. – realnumber3012

관련 문제