2016-03-01 45 views
1

這是我使用的SQL查詢我需要拿起最高計數

select distinct d.npa, n.time_zone, count(n.time_zone) as tz_count 

from #duplicates d 

inner join psi.npanxx n 
on d.npa = n.npa 

where n.time_zone is not null and n.time_zone <> '0' 

group by --d.npanxx_row_id, d.npa, n.time_zone 

order by npa 

我得到的結果是這樣的

npa  time_zone    tz_count 
208   5      10600 
208   4      31300 
219   6      7882 
219   9      7446 

,我只需要最高計數得到如此它看起來像這樣

npa  time_zone    tz_count 
208   5      10600 
219   6      7882 

如果有我可以使用,請讓我知道的任何功能。 非常感謝您的幫助。

+0

選擇MAX(列) –

+0

我可以問你正在嘗試做什麼? –

+0

請使用您正在使用的數據庫標記您的問題 –

回答

1

代替COUNT,正確的SQL關鍵字是MAX

select distinct d.npa, n.time_zone, max(n.time_zone) as tz_count 

from #duplicates d 

inner join psi.npanxx n 
on d.npa = n.npa 

where n.time_zone is not null and n.time_zone <> '0' 

group by --d.npanxx_row_id, d.npa, n.time_zone 

order by npa 

下面是一個例子小提琴。它使用不同的數據集,但使用相同的MAX-Group BY公式。

http://sqlfiddle.com/#!9/2d871e/1/0

+0

It Worked謝謝Richard –

+0

樂意提供幫助。如果您發現它有趣,請不要忘記+1這篇文章 –

0

如果我理解正確的話,你可以使用row_number()

select d.npa, d.time_zone, d.tz_count 
from (select d.npa, n.time_zone, count(*) as tz_count, 
      row_number() over (partition by npa order by count(*) desc) as seqnum 
     from #duplicates d inner join 
      psi.npanxx n 
      on d.npa = n.npa 
     where n.time_zone is not null and n.time_zone <> '0' 
     group by d.npa, n.time_zone 
    ) d 
where seqnum = 1;