Поиск 10 самых популярных твитов в Улье

Я нахожу 10 самых популярных твитов в улье на основе retweet_count, т. Е. Твит с наибольшим значением retweet_count будет 1-м и т. Д.

Вот подробности таблицы выборов

id                      bigint                  from deserializer   
created_at              string                  from deserializer   
source                  string                  from deserializer   
favorited               boolean                 from deserializer   
retweeted_status        struct<text:string,user:struct<screen_name:string,name:string>,retweet_count:int>   from deserializer   
entities                struct<urls:array<struct<expanded_url:string>>,user_mentions:array<struct<screen_name:string,name:string>>,hashtags:array<struct<text:string>>> from deserializer   
text                    string                  from deserializer   
user                    struct<screen_name:string,name:string,friends_count:int,followers_count:int,statuses_count:int,verified:boolean,utc_offset:int,time_zone:string,location:string>    from deserializer   
in_reply_to_screen_name string                  from deserializer  

мой запрос

select text 
from election 
where retweeted_status.retweet_count IN  
     (select  retweeted_status.retweet_count as zz 
      from election  
      order by zz desc  
      limit 10);

Он возвращает мне один и тот же твит 10 раз. (Твит-Азбука, Твит-Азбука, Твит-Азбука,... Твит-Азбука)

Итак, что я сделал, это сломал вложенный запрос, когда я запускаю внутренний запрос

select  retweeted_status.retweet_count as zz 
from election  
order by zz desc  
limit 10

Возвращает 10 различных значений (1210,1209,1208,1207,1206,....1201)

После этого, когда я запускаю свой внешний запрос

select text 
from election  
where retweeted_status.retweet_count 
      IN  (1210,1209,1208,1207,1206,....1201 );

Результаты одинаковы для 10 твитов (твит-азбука, твит-азбука, твит-азбука,... твит-азбука)

Что не так в моей логике запросов?

1 ответ

Вместо использования count вы должны использовать id. это потому, что если у вас 100 твитов с одинаковым количеством, не имеет значения LIMIT 10, вы получите 100 записей.

select text 
from election 
where id  IN  
     (select  id as zz 
      from election  
      order by retweeted_status.retweet_count desc  
      limit 10);

но все еще не уверен, почему вы получаете неправильный результат.

РЕДАКТИРОВАТЬ (после моего комментария):

если мой комментарий верен, то у вас будет один и тот же идентификатор десять раз. В этом случае измените на

     (select distinct id as zz 
      from election  
      order by retweeted_status.retweet_count desc  
      limit 10);
Другие вопросы по тегам