I have a table named t1 with following fields: ROWID, CID, PID, Score, SortKey
it has the following data:
1, C1, P1, 10, 1
2, C1, P2, 20, 2
3, C1, P3
In MySQL:
SELECT l.*
FROM (
SELECT cid,
COALESCE(
(
SELECT id
FROM mytable li
WHERE li.cid = dlo.cid
AND li.score >= 20
ORDER BY
li.cid, li.id
LIMIT 1, 1
), CAST(0xFFFFFFFF AS DECIMAL)) AS mid
FROM (
SELECT DISTINCT cid
FROM mytable dl
) dlo
) lo, mytable l
WHERE l.cid >= lo.cid
AND l.cid <= lo.cid
AND l.id <= lo.mid
AND l.score >= 20