我已经交了一个数据库来运行一些查询。
对于一个查询,我必须从具有数百条记录的两个不同表中找到前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不是很好,对我来说是新手。
谢谢:)
答案 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"