Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

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

Setelah banyak mencoba, saya masih belum mengetahui apakah mungkin untuk memperbaiki urutan di dalam DENSE_RANK() OVER tapi saya menemukan solusi di antara keduanya.

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

Ini tidak sebagus solusi yang saya coba tetapi lebih baik daripada kode kerja saya sebelumnya. Yang saya lakukan adalah memindahkan Sum(Sum(tbl1.qtd)) OVER (PARTITION BY tbl2.lot) keluar dari DENSE_RANK() lalu tambahkan dengan nama 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. Dua gaji pertama di setiap departemen

  2. Apa yang setara dengan PostgreSQL dari SYSDATE dari Oracle?

  3. Apakah mungkin menggunakan sql%rowcount untuk SELECT?

  4. 4 Cara Menyisipkan Beberapa Baris di Oracle

  5. Oracle - dapatkan nama tabel dari teks sql