sql - Select lowest value and return first row only -


i having difficulty returning first row following query. trying return lowest value in result column particular event works fine returns other rows, want one. best way achieve this?

select e.event_id, e.event_type, e.event_name, m.member_id, m.member_firstname, m.member_lastname, (select min(result) rank) event e join rank r on e.event_id = r.event_id join member m on m.member_id = r.member_id  e.event_id = 'event001' order result; 

the subquery in solution below copied , pasted original post, didn't test (obviously since didn't have tables), except field: row_number() on .... instead of min(result...)

this assigns row in each "partition" using ordering indicated (notice desc), , in outer query select rows row_number equals 1.

select event_id, event_type, event_name, member_id,         member_firstname, member_lastname, result (     select e.event_id, e.event_type, e.event_name,            m.member_id, m.member_firstname, m.member_lastname,            r.result,            row_number() on (partition e.event_id order r.result) rn       event e join            rank r            on e.event_id = r.event_id join            member m            on m.member_id = r.member_id       e.event_id = 'event001' ) rn = 1; 

this assumes want return 1 row, if there tie lowest score. if there ties, row selected undetermined (at least solution; add more clauses in order by). if in case of ties want tied members listed, can use dense_rank() instead of row_number().


Comments