#sql #django #group-by
#sql #django #группировка по
Вопрос:
Эй, я хочу сделать запрос, который выдаст мне то же самое, что и this в SQL:
select testresult.*,max(timeEnd)
from testresult
group by testresult.idTest
idTest
не является PK в testresult.
это FK в test
необходимо максимальное testresult
для любого теста, скажем
s=query()
s[0].id ;is that TestResult
Комментарии:
1. Вам нужна строка с максимальным значением
timeEnd
?2. @DrTyrsa группируется по тестам, да
3. @shevski Вы получите это с запросом в моем ответе.
4. @DrTyrsa Я пробовал это, и значения восстанавливаются
dict
из{idTest,maxtimeend}
, и я не могу ссылаться на testresult из него5. @shevski
testresult
— это имя таблицы в вашем запросе, как вы хотите на него ссылаться?
Ответ №1:
Вы можете группировать по любому полю, а не только по первичному ключу.
TestResult.objects.values('idTest').annotate(max_time_end=Max('timeEnd')).order_by()
Комментарии:
1. как мне впоследствии получить PK от TestResult?
2. этот запрос даст мне
dict
ключи для тестов и их максимальноеtimeEnd
3. @shevski И чего ты хочешь?
4.
Max
находится вdjango.db.models
, на всякий случай, если кто-нибудь столкнется с этим и не знает. @DrTyrsa: для полноты картины вы должны указать какой-либо требуемый импорт; новичку не всегда легко найти эту информацию.