예, 나는 세 개의 열이있는 레코드 집합이 있습니다, 계산SQL이 그룹의 일부 통계를 기반으로 레코드 그룹을 선택하는 방법은 무엇입니까?
ID, 주
- 1,1,10;
- 1,2,20;
- 1,3,30;
- 2,1,3;
- 2,2,2;
- 2,3,15;
내가 원하는 것은 평균 계수가 10보다 큰 ID의 데이터입니다. 그런 다음이 예제 데이터에서 id = 1의 데이터가 선택됩니다.
감사합니다.
예, 나는 세 개의 열이있는 레코드 집합이 있습니다, 계산SQL이 그룹의 일부 통계를 기반으로 레코드 그룹을 선택하는 방법은 무엇입니까?
ID, 주
내가 원하는 것은 평균 계수가 10보다 큰 ID의 데이터입니다. 그런 다음이 예제 데이터에서 id = 1의 데이터가 선택됩니다.
감사합니다.
SELECT id FROM YourTable GROUP BY id HAVING AVG(count) > 10
"그룹"에 의해 ID 만 선택되지만이 ID의 레코드는 선택되지 않습니다. – user2356447
네 맞아. 목록 ID가 있습니다. 운영자
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
RDBMS SQL SERVER 또는 ORACLE 인 경우. 당신은 쿼리가 작동합니다. 그리고 여기 하나의 스캔 테이블. – realnumber3012
@ realnumber3012 . . SQL Server 2012, Oracle, Postgres (많은 데이터베이스가 Postgres를 기반으로 함) 및 DB2의 모든 지원 창 기능을 지원합니다. –
감사합니다. 나는 명심할 것이다. – realnumber3012
SELECT ID FROM YourTable GROUP BY ID (평균)> 10 – realnumber3012
@ realnumber3012 답변으로 게시 – peterm