sql >> Database >  >> RDS >> Oracle

Oracle - SELECT DENSE_RANK OVER (ORDER BY, SUM, OVER en PARTITION BY)

Na veel proberen ben ik er nog steeds niet achter of het mogelijk is om de bestelling binnen de DENSE_RANK() te herstellen 's OVER maar ik heb wel een oplossing gevonden tussen de twee.

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

Het is niet zo goed als de oplossing die ik probeerde, maar het is beter dan mijn vorige werkende code. Wat ik deed was de Sum(Sum(tbl1.qtd)) OVER (PARTITION BY tbl2.lot) uit de DENSE_RANK() en voeg het dan toe met de naam qtd_lot .




  1. Oracle ORA-30004 bij gebruik van de functie SYS_CONNECT_BY_PATH,

  2. Hoe haal ik alle triggernamen uit een database met Java JDBC?

  3. Hoe case-statement te gebruiken in waar-voorwaarde?

  4. WordPress Editor werkt bestanden niet bij:kan niet terug communiceren met de site om te controleren op fatale fouten