Я пытаюсь выяснить, как выполнить следующий SQL запрос с Django ORM:
SELECT main.A, main.B, main.C
FROM
(SELECT main.A, MAX(main.B)
FROM main
GROUP BY main.A) subq
WHERE main.A = subq.A
AND main.B = subq.B
Последние две строки необходимы, поскольку они восстанавливают значение столбца C когда B находится в максимуме в группе. Без них у меня был бы A и соответствующий Max B, но не значение C, когда B на максимуме. Я много искал, но не могу найти пример, который может построить этот запрос, используя Django ORM. В большинстве примеров используется класс Subquery Django, и показано, как сопоставить подзапрос с одним столбцом (как и в случае main.A = subq.A). Но как мне сопоставить 2+ столбца?
Редактировать: Вот класс модели:
class Tweets(models.Model):
tweet_id = models.AutoField(primary_key=True)
tweet_date = models.DateTimeField(blank=True)
candidate = models.CharField(max_length=100)
district = models.IntegerField(blank=True)
username = models.CharField(max_length=256)
likes = models.IntegerField(blank=True)
tweet_text = models.CharField(max_length=560)
Я бы хотел сгруппировать по «кандидатам» и «районам», а затем найти чирикать с наибольшим количеством лайков. Но я также хотел бы знать «username» и «tweet_text», связанные с тем твитом, у которого больше всего лайков.