Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle - DENSE_RANK ओवर चुनें (ऑर्डर बाय, एसयूएम, ओवर और पार्टिशन बाय)

बहुत कोशिश करने के बाद भी मुझे पता नहीं चला कि क्या 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 . नाम से जोड़ें ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कर्मचारी विभागवार एवं कर्मचारियों की संख्या 5 . से अधिक

  2. ऑरैकल में डेटा डालने के दौरान वैध माह नहीं है

  3. Oracle के साथ काम करते समय Fluent NHibernate के साथ बैच लाने को कैसे कार्यान्वित करें?

  4. TO_YMINTERVAL () Oracle में फ़ंक्शन

  5. केवल पिछले 3 महीनों का डेटा निकालने के लिए expdp में QUERY का उपयोग कैसे करें