मैंने परीक्षण के लिए तालिका बनाई:
create table nr_pvo_120 (
otherid,
fax
)
as
select 12365092 , 2762364204 from dual union all
select 12005656 , 2762364204 from dual union all
select 12484936 , 2762364204 from dual union all
select 39003042 , 2762364204 from dual union all
select 12365597 , 2762364204 from dual union all
select 12635922 , 2762364204 from dual union all
select 12332346 , 2762364204 from dual union all
select 12365092 , 4387267572 from dual union all
select 12005656 , 4387267572 from dual union all
select 12365092 , 4422911281 from dual union all
select 12005656 , 4422911281 from dual union all
select 12484936 , 4422911281 from dual union all
select 12651239 , 4422911281 from dual union all
select 12388710 , 4422911281 from dual union all
select 12686953 , 4422911281 from dual union all
select 12365092 , 4423311213 from dual union all
select 12005656 , 4423311213 from dual union all
select 12709544 , 4423311213 from dual union all
select 12484936 , 4423311213 from dual union all
select 12005656 , 4424450542 from dual union all
select 12346839 , 4424450542 from dual union all
select 12365120 , 4424450542 from dual union all
select 12484936 , 4424450542 from dual union all
select 12086512 , 4424450542 from dual
/
मेरा पहला शॉट होगा:प्रत्येक व्यक्ति (अन्य) के लिए उसका पहला . प्राप्त करें केवल फ़ैक्स नंबर और उसके बाद एक सामान्य समूह करें और उस पर भरोसा करें:
select first_fax, count(*) firstcount
from (
select otherid, min(fax) first_fax
from nr_pvo_120
group by otherid
)
group by first_fax
order by first_fax
/
आउटपुट बन जाएगा:
FIRST_FAX FIRSTCOUNT
---------- ----------
2762364204 7
4422911281 3
4423311213 1
4424450542 3
फिर मैंने देखा कि आपके वांछित आउटपुट में पाँचवाँ फ़ैक्स नंबर शामिल है लेकिन शून्य की गिनती के साथ। उदाहरण के लिए इसे इस तरह किया जा सकता है:
select fax, count(*) normalcount, count(otherid_on_first_fax) countunused
from (
select fax, otherid,
case
when fax = min(fax) over (partition by otherid order by fax)
then otherid
end otherid_on_first_fax
from nr_pvo_120
)
group by fax
order by fax
/
इस आउटपुट में, कॉलम NORMALCOUNT
उस फैक्स वाले लोगों की संख्या है। कॉलम COUNTUNUSED
उन लोगों की संख्या है जो पहले से ही "उपयोग" . नहीं किए गए हैं पिछली गिनती में:
FAX NORMALCOUNT COUNTUNUSED
---------- ----------- -----------
2762364204 7 7
4387267572 2 0
4422911281 6 3
4423311213 4 1
4424450542 5 3
चाल यह है कि otherid_on_first_fax
केवल otherid
. का मान है व्यक्तियों पर पहले फैक्स नंबर, शेष व्यक्तियों के लिए फैक्स नंबर otherid_on_first_fax
शून्य है। count(otherid_on_first_fax)
फिर सभी गैर-शून्य मानों की गणना करता है, जिनमें से फैक्स 4387267572 के लिए कोई नहीं है।