Допустим, у меня есть две таблицы в моей базе данных.
TABLE:Categories
ID|CategoryName
01|CategoryA
02|CategoryB
03|CategoryC
и таблица, которая ссылается на категории, а также содержит столбец, в котором хранится случайное число.
TABLE:CategoriesAndNumbers
CategoryType|Number
CategoryA|24
CategoryA|22
CategoryC|105
.....(20,000 records)
CategoryB|3
Теперь, как мне отфильтровать эти данные? Итак, я хочу знать, какие 3 самых маленьких числа находятся в каждой категории, и удалить остальные. Конечный результат будет таким:
TABLE:CategoriesAndNumbers
CategoryType|Number
CategoryA|2
CategoryA|5
CategoryA|18
CategoryB|3
CategoryB|500
CategoryB|1601
CategoryC|1
CategoryC|4
CategoryC|62
Сейчас я могу получить наименьшее число между всеми категориями, но я бы хотел, чтобы каждая категория сравнивалась по отдельности.
РЕДАКТИРОВАТЬ: я использую Access и вот мой код пока
SELECT TOP 10 cdt1.sourceCounty, cdt1.destCounty, cdt1.distMiles
FROM countyDistanceTable as cdt1, countyTable
WHERE cdt1.sourceCounty = countyTable.countyID
ORDER BY cdt1.sourceCounty, cdt1.distMiles, cdt1.destCounty
РЕДАКТИРОВАТЬ2: Благодаря Remou, здесь будет рабочий запрос, который решил мою проблему. Спасибо!
DELETE
FROM CategoriesAndNumbers a
WHERE a.Number NOT IN (
SELECT Top 3 [Number]
FROM CategoriesAndNumbers b
WHERE b.CategoryType=a.CategoryType
ORDER BY [Number])