_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈 |
FrontPage › 부분정렬
|
|
다음과 같은 테이블이 있다.
--drop table #temp create table #temp(id int, sort_yn int) insert #temp values(1,0),(2,0),(3,1),(4,1),(5,1),(6,1),(7,0),(8,1),(9,0) select * from #temp /* id sort_yn ----------- ----------- 1 0 2 0 3 1 4 1 5 1 6 1 7 0 8 1 9 1 10 0 */ 위 테이블에서 다음과 같이 trnd = 1인 row들만 랜덤으로 정렬하고자 한다. 원하는 예를 들면 다음과 같다.
id sort_yn ----------- ----------- 1 0 2 0 5 1 6 1 4 1 3 1 7 0 9 1 8 1 10 0 다음과 같이 하면 된다.
select id , sort_yn from ( select id , sort_yn , seq , row_number() over(partition by seq order by newid()) sort from ( select id , case when sort_yn = 1 then min(id) over(partition by grp) else id end seq , sort_yn , grp from ( select id , sort_yn , row_number() over(order by id) - row_number() over(order by sort_yn, id) grp from #temp a ) t ) t ) t order by seq, sort
|
전깃불이 나간 어두운 방안에서 초가 있으면서도 초를 아끼느라 켜지 않는다면 어떻게 될까. 마찬가지로 한두 마디의 상냥한 말이면 상대방의 마음을 밝게 해 주고 유쾌한 분위기를 만들 수 있는데 그러지 않는다면 그것은 마치 초를 아끼기 위해 어둠 속에 있는 것과 같다. (T. 제퍼슨) |