SELECT t.*
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY X ORDER BY Y) AS row_count
FROM [TABLE]
WHERE [FILTER...]
) t
WHERE row_count <= N
SELECT t.*
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY X ORDER BY Y) AS row_count
FROM [TABLE]
WHERE [FILTER...]
) t
WHERE row_count <= N