Did you try DISTINCT ON?
postgres=# table x;
id | qid | uid
----+-----+--------
1 | 25 | 1
2 | 25 | 1
3 | 25 | 1
4 | 26 | 1
5 | 26 | 1
6 | 27 | 1
7 | 27 | 1
8 | 25 | 2
9 | 25 | 2
10 | 25 | 2
11 | 26 | 2
12 | 26 | 2
13 | 27 | 2
14 | 27 | 2
15 | 25 | <NULL>
16 | 25 | <NULL>
17 | 25 | <NULL>
18 | 26 | <NULL>
19 | 26 | <NULL>
20 | 27 | <NULL>
21 | 27 | <NULL>
(21 rows)
postgres=# select distinct on (qid, uid) * from x order by uid, qid, id desc;
id | qid | uid
----+-----+--------
3 | 25 | 1
5 | 26 | 1
7 | 27 | 1
10 | 25 | 2
12 | 26 | 2
14 | 27 | 2
17 | 25 | <NULL>
19 | 26 | <NULL>
21 | 27 | <NULL>
(9 rows)
Is that what you need?