sql - Select min group by another column -
i have table consisting of these fields:
id | groupid | position ------------------------------------ ck1 10 1 ck1 10 2 ck1 10 3 ck1 11 4 ck1 11 5 ck1 11 6 ck1 12 7 ck1 12 8 ck1 12 9 i need select includes min value of position in group of registre:
id | groupid | position | minposition ------------------------------------------- ck1 10 1 1 ck1 10 2 1 ck1 10 3 1 ck1 11 4 4 ck1 11 5 4 ck1 11 6 4 ck1 12 7 7 ck1 12 8 7 ck1 12 9 7 thanks
you can use in dbms:
select id, groupid, position, mytable mt inner join ( select id, groupid, min(position) mytable group id, groupid ) mini on mt.id = mini.id , mt.groupid = mt.groupid this better version if use sql server (>= 2008)
select id, groupid, position, min(position) on (partition id, groupid) mytable mt here full code demo:
create table #temp(id char(3), groupid int, position int) insert #temp(id, groupid, position) values (n'ck1',10,1),(n'ck1',10,2),(n'ck1',10,3),(n'ck1',11,4),(n'ck1',11,5),(n'ck1',11,6),(n'ck1',12,7),(n'ck1',12,8),(n'ck1',12,9) select id, groupid, position, min(position) on (partition id, groupid) minposition #temp mt drop table #temp this produces result:
id groupid position minposition ---- ----------- ----------- ----------- ck1 10 1 1 ck1 10 2 1 ck1 10 3 1 ck1 11 4 4 ck1 11 5 4 ck1 11 6 4 ck1 12 7 7 ck1 12 8 7 ck1 12 9 7
Comments
Post a Comment