Po wielu próbach nadal nie wiem, czy można naprawić kolejność w DENSE_RANK()
OVER
ale znalazłem rozwiązanie pomiędzy tymi dwoma.
SELECT lot, def, qtd
FROM (
SELECT DENSE_RANK() OVER (ORDER BY qtd_lot DESC) rnk, lot, def, qtd
FROM (
SELECT tbl2.lot lot, tbl1.def def, Sum(tbl1.qtd) qtd, Sum(Sum(tbl1.qtd)) OVER (PARTITION BY tbl2.lot) qtd_lot
FROM db.tbl1 tbl1, db.tbl2 tbl2
WHERE tbl2.key = tbl1.key
GROUP BY tbl2.lot, tbl1.def
)
)
WHERE rnk <= 10
ORDER BY rnk, qtd DESC, lot, def
Nie jest tak dobre jak rozwiązanie, które próbowałem, ale jest lepsze niż mój poprzedni działający kod. To, co zrobiłem, to przeniesienie Sum(Sum(tbl1.qtd)) OVER (PARTITION BY tbl2.lot)
z DENSE_RANK()
a następnie dodaj go z nazwą qtd_lot
.