Для примера, я хотел бы, чтобы выбрать идентификатор с максимальной датой группы по категориям, результат: 7, 2, 6Как выбрать идентификатор с максимальной датой по категориям в запросе Ecto с Phoenix?
id category date
1 a 2013-01-01
2 b 2013-01-03
3 c 2013-01-02
4 a 2013-01-02
5 b 2013-01-02
6 c 2013-01-03
7 a 2013-01-03
8 b 2013-01-01
9 c 2013-01-01
Это SQL, я думаю, может работать:
SELECT * FROM Table1 t1
JOIN
(
SELECT category, MAX(date) AS MAXDATE
FROM Table1
GROUP BY category
) t2
ON T1.category = t2.category
AND t1.date = t2.MAXDATE
Но как перевести это в запрос на Ecto?
Unrelated, но: с Postgres, используя 'отличие от()' или запрос с использованием оконных функций будет намного быстрее, чем с помощью автообъединения с 'группы по . –