बहुत कोशिश करने के बाद भी मुझे पता नहीं चला कि क्या DENSE_RANK()
के अंदर ऑर्डर को ठीक करना संभव है। का ओवर
लेकिन मुझे दोनों के बीच एक समाधान मिल गया।
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
यह उस समाधान जितना अच्छा नहीं है जिसे मैं कोशिश कर रहा था लेकिन यह मेरे पिछले कामकाजी कोड से बेहतर है। मैंने जो किया वह Sum(Sum(tbl1.qtd)) OVER (Tbl2.lot द्वारा विभाजन)कोड को स्थानांतरित कर दिया गया था।>
DENSE_RANK()
. में से और फिर इसे qtd_lot
. नाम से जोड़ें ।