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

तालिका में लगातार डुप्लिकेट कैसे गिनें?

इसे Tabibitosan विधि से किया जा सकता है। इसे समझने के लिए इसे चलाएं:

with a as(
select 1 slno, 'A' pg from dual union all
select 2 slno, 'A' pg from dual union all
select 3 slno, 'B' pg from dual union all
select 4 slno, 'A' pg from dual union all
select 5 slno, 'A' pg from dual union all
select 6 slno, 'A' pg from dual 
)
select slno, pg, newgrp, sum(newgrp) over (order by slno) grp
from( 
    select slno, 
           pg, 
           case when pg <> nvl(lag(pg) over (order by slno),1) then 1 else 0 end newgrp
    from a
    );

Newgrp का अर्थ है एक नया समूह मिल गया है।

परिणाम:

SLNO PG NEWGRP GRP
1    A  1      1
2    A  0      1
3    B  1      2
4    A  1      3
5    A  0      3
6    A  0      3

अब, अधिकतम बारंबारता वाले समूह को खोजने के लिए, गिनती के साथ समूह का उपयोग करें:

with a as(
select 1 slno, 'A' pg from dual union all
select 2 slno, 'A' pg from dual union all
select 3 slno, 'B' pg from dual union all
select 4 slno, 'A' pg from dual union all
select 5 slno, 'A' pg from dual union all
select 6 slno, 'A' pg from dual 
),
b as(
select slno, pg, newgrp, sum(newgrp) over (order by slno) grp
from( 
    select slno, pg, case when pg <> nvl(lag(pg) over (order by slno),1) then 1 else 0 end newgrp
    from a
    )
)
select max(cnt)
from (
    select grp, count(*) cnt
    from b
    group by grp
    );


  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. इष्टतम Oracle SQL क्वेरी ~ 7,000,000 रिकॉर्ड युक्त एकल तालिका में एकाधिक स्तंभों पर समूह-दर पूरा करने के लिए

  3. ओरेकल से कनेक्ट करने में त्रुटि। विधि t2cGetCharSet के लिए एक असंतुष्ट लिंक त्रुटि प्राप्त करना

  4. डीबी अनुक्रम प्रारंभ मूल्य कैसे बदलें

  5. Oracle डेटाबेस में PL/SQL ब्लॉक सदस्य के रूप में VARRAYs कैसे बनाएं?