MySQL입니다.
index | price | count |
1 | 100 | 5 |
2 | 50 | 6 |
3 | 1000 | 7 |
4 | 500 | 10 |
5 | 200 | 0 |
6 | 2000 | 4 |
7 | 10 | 8 |
8 | 600 | 2 |
9 | 300 | 1 |
위와 같은 데이터를 price를 내림차순으로 정렬하고 총 20개의 수량(count 누적)에 대한 총 가격 (price * count) 를 구하고 싶은데 어렵네요.
즉 select price, count from xxx order by price desc; 하면 (2000, 4), (1000, 7), (600, 2), (500, 10), ....... 이렇게 나올텐데 500을 누적 카운트 20에서 짤리는 7만 적용하고 (2000 * 4) + (1000 * 7) + (600 * 2) + (500 * 7) 값만 계산하는 겁니다...
머리에 쥐나네요 ㅠㅠ
고수님들의 조언 부탁드립니다~
SELECT SUM(prc * cnt1) amt FROM (SELECT idx, prc, cnt , LEAST(cnt, @cnt) cnt1 , @cnt := @cnt - LEAST(cnt, @cnt) FROM (SELECT 1 idx, 100 prc, 5 cnt UNION ALL SELECT 2, 50, 6 UNION ALL SELECT 3, 1000, 7 UNION ALL SELECT 4, 500, 10 UNION ALL SELECT 5, 200, 0 UNION ALL SELECT 6, 2000, 4 UNION ALL SELECT 7, 10, 8 UNION ALL SELECT 8, 600, 2 UNION ALL SELECT 9, 300, 1 ) a , (SELECT @cnt := 20) b ORDER BY prc DESC, idx ) a ;