найти почтовый индекс, на который пользователь потратил больше всего времени - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть таблица:

  • Идентификатор_пользователь
  • Почтовый индекс
  • Часы по почтовому индексу

Мне нужно найти ту, на которой пользователь провел больше всего времени. Я попробовал функцию max, потом подумал о том, чтобы упорядочить по часам Desc и взять верхнюю, но я никуда не доберусь,

Может кто-нибудь помочь?

enter image description here

1 Ответ

1 голос
/ 15 апреля 2019

Будет выведено две записи, если пользователь потратил равные макс. Часы на два почтовых индекса:

select
     UserID,
     Postcode,
     Hours
from
(
select 
    UserID,
    Postcode,
    Hours,
    dense_rank() over(partition by userId order by hours desc) rn
 from (select --skip this subquery if hours already aggregated by user, postcode
             UserID, Postcode, sum(Hours) hours
         from table group by UserID, Postcode
      ) s
    )s
where rn = 1;

Используйте row_number() over(partition by userId order by hours desc) rn вместо dense_rank(), если вам нужна отдельная запись на пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...