Как получить общее количество уникальных идентификаторов

#sql #amazon-web-services #amazon-athena #dbeaver

Вопрос:

Мне нужно получить общее количество уникальных идентификаторов

 select ID, min(date_time)
,case when ID is null then 0 else 1 end as New_ID
,SUM(New_ID) over (order by ID) as runningTotal_ID
          from Table1
          Group by 1
 

или, может быть, если я смогу напрямую посчитать
select Id, count(Id) over (order by ID) as Running Total

Но привязанный к этому, он дает мне 10000… посчитайте, но есть только 200 идентификаторов

Может кто-нибудь, пожалуйста, помочь мне здесь!

Комментарии:

1. Отредактируйте свой вопрос и покажите примерные данные и желаемые результаты. Неясно, каким вы хотите видеть итоговый показатель.

Ответ №1:

Вы можете использовать dense_rank() .,, предполагая, что вы хотите, чтобы они id были назначены по порядку:

 select t1.*, dense_rank() over (order by id) as runningTotalId
from Table1 t1;
 

Если нет, вы можете отметить первое и использовать накопительную сумму:

 select t1.*,
       sum(case when seqnum = 1 then 1 else 0 end) over (order by datetime) as runningTotalId
from (select t1.*, 
             row_number() over (partition by id order by datetime) as seqnum
      from table1 t1
     ) t