次のテーブルがあります。
trendingtopic
id
name
trendingtopiccycle
id
trendingtopic_id(FK)
tweet
id
text
tt_cycle_id(FK)
user_id(FK)
user
id
rank
各トレンドトピックの上位ユーザーのツイートを効率よく取得する方法があれば教えてください。
これが私の現在のクエリです:
SELECT tt."name",
MAX(tu."actual_rank") AS rank,tu."name"
FROM "trendingtopics_twitteruser" tu
LEFT JOIN "trendingtopics_tweet" tw ON tu."id" = tw."user_id"
LEFT JOIN "trendingtopics_trendingtopiccycle" ttc ON tw."tt_cycle_id" = ttc."id"
LEFT JOIN "trendingtopics_trendingtopic" tt ON ttc."tt_id" = tt."id"
GROUP BY tt."name"
Postgresql によると、' "tu.name" は GROUP BY 句に表示されるか、集計関数で使用される必要があるため、機能していません。
tu."name" を GROUP BY 句に追加すると、次のような結果になります。
"106 & Park";0;"910Prince"
"106 & Park";0;"ActressAlexiss"
"106 & Park";0;"AmeliaThirlwall"
"106 & Park";0;"_ArielIvy"
"106 & Park";0;"_AyyeVce"
"106 & Park";0;"barcastuff"
"106 & Park";0.42141;"pareexo"
"106 & Park";0.0363;"khleosupporters"
"#15ThingsAboutMyCrush";0;"_ALoyalLady"
"#15ThingsAboutMyCrush";0.22275;"AmberrNikole"
"#15ThingsAboutMyCrush";0;"a_paigeturner"
"#15ThingsAboutMyCrush";0.33942018;"ArleneAndrea_xo"
しかし、私が取得したいのは:
"106 & Park";0.42141;"pareexo"
"#15ThingsAboutMyCrush";0.33942018;"ArleneAndrea_xo"