Предложение TOP получит вас в топе на основе вашего первого поля сортировки.Поскольку ваше первое поле сортировки является константой (2) для всех записей, вы получаете все записи.Добавьте поле ID в ваше предложение ORDER BY, и вы получите только пять записей.
SELECT TOP 5 g.ID, Count(t.Grade) AS Total
FROM grade AS g LEFT JOIN (SELECT Grade FROM telephony WHERE [Date] BETWEEN #08/16/2010# AND #08/20/2010#) AS t ON g.ID = t.Grade
GROUP BY g.ID
ORDER BY g.ID, 2 DESC;
Если вы на самом деле после первой пятерки по сумме в порядке убывания, измените SQL на следующее:
SELECT TOP 5 g.ID, Count(t.Grade) AS Total
FROM grade AS g LEFT JOIN (SELECT Grade FROM telephony WHERE [Date] BETWEEN #08/16/2010# AND #08/20/2010#) AS t ON g.ID = t.Grade
GROUP BY g.ID
ORDER BY Count(t.Grade) DESC , 2 DESC;
Это по значению сверху, поэтому, если общее количество записей в одной записи совпадает и окажется в верхнем 5 значении Total, вы получите их обратно.Если вы действительно хотите вернуть только пять записей, вам нужно отсортировать по уникальному полю.