2016-03-01 3 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

Работало Спасибо Ричард –

+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; 
Смежные вопросы