如何在访问SQL中每组中排名前3位

时间:2013-10-14 18:44:51

标签: sql ms-access

我试图将一组中的前三名表演者拉下来。我不确定如何在Access中执行此操作,我需要的是每个组都能获得前三名。

http://allenbrowne.com/subquery-01.html

我已经尝试过这些子查询,但是他们给了我一条错误信息。有一个更好的方法吗?

这是关键字效果。

表格字段是

Keyword | Campaign | Ad Group |  Clicks | Impressions 

我希望每个广告组的点击次数排在前3位。我也想获得前3个展示次数,但一旦我知道如何点击,我就可以根据需要进行修改。 我想要像

一样
Ad Group 1 - First Top
Ad Group 1 - Second Top
Ad Group 1 - Third Top
Ad Group 2 - First Top
Ad Group 2 - Second Top
Ad Group 2 - Third Top
etc

SELECT KeywordReport.ID, KeywordReport.Campaign, KeywordReport.[Ad group], KeywordReport.Keyword, KeywordReport.Clicks, KeywordReport.Impressions, KeywordReport.[Avg CPC], KeywordReport.[Search Impr share], KeywordReport.Cost
FROM KeywordReport
WHERE (((KeywordReport.ID) In (SELECT TOP 3 ID 
FROM KeywordReport AS Dupe
WHERE Dupe.ID = KeywordReport.ID
ORDER BY Dupe.Clicks DESC)))
ORDER BY KeywordReport.[Ad group];

它返回的所有条目都不是前三名。

1 个答案:

答案 0 :(得分:0)

我认为你很亲密:

WHERE (((KeywordReport.ID) In (SELECT TOP 3 ID 
FROM KeywordReport AS Dupe
WHERE Dupe.[Ad Group] = KeywordReport.[Ad Group]   <-- change this line
ORDER BY Dupe.Clicks DESC)))