Поиск 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);