2012-05-31 7 views
1

ModelsVideoProcessor 열을 구하려면이 쿼리를 어떻게 수정할 수 있습니까?SQL Server 2005의 SELECT DISTINCT 쿼리

SELECT TOP(20) * 
FROM 
    (SELECT 
     [3D_Benchmarks].Id AS BenchmarkId, 
     Manufacturer, Model, Slug, VideoProcessor, 
     FPS, CPU 
    FROM 
     [3D_Benchmarks] 
    JOIN 
     [3D_Slugs] ON [3D_Benchmarks].Id = [3D_Slugs].BenchmarkId) AS tb 
ORDER BY 
    tb.FPS DESC; 

답변

2

귀하의 의견을 바탕으로 한 새로운 대답입니다. 이것은 20 개의 최고 FPS 모델 + VideoProcessor를 찾습니다. 각각의 경우, 가장 높은 FPS를 가진 행을 선택합니다.

select details.Model 
,  details.VideoProcessor 
,  details.FPS 
,  <add other columns here> 
from (
     select top 20 b.Model 
     ,  VideoProcessor 
     from [3D_Benchmarks] b 
     join [3D_Slugs] s 
     on  b.Id = s.BenchmarkId 
     group by 
       b.Model 
     order by 
       max(b.FPS) desc 
     ) top20 
cross apply 
     (
     select top 1 * 
     from [3D_Benchmarks[ b 
     join [3D_Slugs] s 
     on  b.Id = s.BenchmarkId 
     where b.Model = top20.Model 
       and b.VideoProcessor = top20.VideoProcessor 
     order by 
       b.FPS desc 
     ) details 
+0

감사합니다. 그러나이 것은 두 개의 열만 반환합니다. 이 두 가지 별개의 (모델 및 비디오 프로세서) 위의 모든 열이 필요하며이 쿼리를 내 쿼리와 결합하는 방법을 모르겠다. –

+1

Model = '3000'및 VideoProcessor = AwesomeGpu라는 두 행이 있다고 가정 해보십시오. 100 FPS 및 50 FPS를 지원합니다. 어떤 FPS 값을 표시 하시겠습니까? – Andomar

+0

가장 높은 fps를 가진 최상위 20을 같은 비디오 프로세서에서 동일한 모드로 표시하고 싶습니다. –