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

पुराने रिकॉर्ड को तीन स्तंभों द्वारा समूहीकृत करना और तिथि के अनुसार क्रम से हटाना

ROW_NUMBER का उपयोग करें उन पंक्तियों को खोजने के लिए विश्लेषणात्मक कार्य जो प्रत्येक समूह में नवीनतम नहीं हैं और फिर आप ROWID का उपयोग कर सकते हैं DELETE . में सहसंबद्ध करने के लिए छद्म-स्तंभ :

DELETE FROM tmp_data
WHERE ROWID IN (
  SELECT rid
  FROM   (
    SELECT ROWID As rid,
           ROW_NUMBER() OVER (
             PARTITION BY col_2, col_3, col_6
             ORDER BY col_4 DESC
           ) AS rn
    FROM   tmp_data
  )
  WHERE rn > 1
)

जो 22 पंक्तियों को हटा देता है।

db<>fiddle यहां




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कई तालिकाओं से ओरेकल का चयन करें

  2. ORA-01031:दृश्य का चयन करते समय अपर्याप्त विशेषाधिकार

  3. Oracle PL/SQL:लूप ओवर ट्रिगर कॉलम गतिशील रूप से

  4. ऑरैकल में एक टेबल पर सभी बाधाओं को कैसे जांचें?

  5. एकाधिक विशेषताओं के लिए Oracle LISTAGG ()?