Нужна помощь с SQL-запросом в Access - PullRequest
1 голос
/ 05 февраля 2010

Мне передана база данных для выполнения нескольких запросов.

Для одного запроса мне нужно найти 10 лучших приложений из двух разных таблиц с сотнями записей. затем в строке (11) мне нужно подвести СУММУ или подсчитать оставшиеся записи и назвать строку «Другое».

До сих пор я разработал следующий код.

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"

Может кто-нибудь помочь или порекомендовать что-нибудь.

К вашему сведению: я использую Access 2007, встроенный в SQL View, и я знаю, что есть пределы того, сколько можно сделать.

Я не очень хорошо разбираюсь в SQL, он для меня новый.

Спасибо:)

Ответы [ 2 ]

1 голос
/ 05 февраля 2010

Что вам нужно, это
1) Запрос выше, который получает топ 10, назовите его Top10Apps.
2) Второй запрос, который выбирает из тех же таблиц выше, но где строки не находятся в Top10Apps, и суммирует строки / возвращает суммы и агрегаты с тегом «Other». Call This SumOfNotTop10Apps
3) Третий запрос, объединяющий Top10App и SumOfNotTop10Apps

Если неясно, оставьте несколько комментариев, и я постараюсь прояснить ситуацию.

0 голосов
/ 05 февраля 2010
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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...