需要Access中的SQL查询帮助

时间:2010-02-05 08:35:55

标签: sql ms-access

我已经交了一个数据库来运行一些查询。

对于一个查询,我必须从具有数百条记录的两个不同表中找到前10个应用程序。然后在第(11)行,我将需要SUM或计算剩余的记录,并将行命名为“其他”。

到目前为止,我已经制定了以下代码。

SELECT TOP 10 ApplicationTbl.AppName, Count(*) AS SessionNos
FROM ApplicationTbl INNER JOIN SessionTbl ON ApplicationTbl.AppID = SessionTbl.AppID
GROUP BY ApplicationTbl.AppName;
ORDER BY Count(*) DESC; 

我显示了10条顶级记录,但我知道需要将剩余的SessionNos加在第11行并将AppName重命名为“Other”

任何人都可以帮助,或推荐任何东西。

仅供参考:我使用的是基于SQL View的Access 2007,我知道可以完成的工作数量有限制。

我对SQL不是很好,对我来说是新手。

谢谢:)

2 个答案:

答案 0 :(得分:1)

你需要的是什么 1)上面的查询获得前10名,称之为Top10Apps 2)第二个查询,从上面的相同表中选择,但行不在Top10Apps中,并对行/求和,返回总和&使用“其他”标记进行聚合。调用此SumOfNotTop10Apps
3)第三个查询联合Top10App& SumOfNotTop10Apps

如果发表一些评论并不清楚,我会尽量让它更清楚。

答案 1 :(得分:0)

SELECT TOP 10 ApplicationTbl.AppName, Count(*) AS SessionNos
FROM ApplicationTbl 
INNER JOIN SessionTbl 
ON ApplicationTbl.AppID = SessionTbl.AppID
GROUP BY ApplicationTbl.AppName
ORDER BY Count(*) DESC

UNION ALL

SELECT "Other" AS AppName, Count(*) AS SessionNos
FROM (ApplicationTbl 
INNER JOIN SessionTbl 
ON ApplicationTbl.AppID = SessionTbl.AppID) 
LEFT JOIN (SELECT TOP 10 ApplicationTbl.AppName, Count(*) AS SessionNos
           FROM ApplicationTbl 
           INNER JOIN SessionTbl 
           ON ApplicationTbl.AppID = SessionTbl.AppID
           GROUP BY ApplicationTbl.AppName;
           ORDER BY Count(*) DESC)  AS s 
ON ApplicationTbl.AppName = s.AppName
WHERE s.AppName Is Null
GROUP BY "Other"