Чтобы вернуть записи из каждой группы с минимальной датой создания в SQL, вы можете использовать подзапросы или оконные функции. Вот несколько способов выполнить это:
1. С использованием подзапроса - можно использовать подзапрос с оператором "NOT EXISTS":
SELECT * FROM your_table t1 WHERE NOT EXISTS ( SELECT 1 FROM your_table t2 WHERE t2.group_id = t1.group_id AND t2.created_date < t1.created_date );
В этом запросе выбираются все записи из таблицы, для которых не существует других записей с более ранней датой создания в той же группе.
2. С использованием оконных функций - можно использовать функцию ROW_NUMBER() для присвоения каждой записи сгенерированного номера и затем выбрать записи с номером 1 для каждой группы:
SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY created_date) AS rn FROM your_table ) t WHERE rn = 1;
В этом запросе внутренний SELECT с оконной функцией присваивает каждой записи номер rn в пределах каждой группы, упорядоченных по дате создания. Затем внешний SELECT выбирает записи тех, у которых номер rn равен 1.
Оба этих способа позволяют выбрать записи из каждой группы с наименьшей датой создания. В зависимости от вашей БД и ваших требований, один из этих способов может быть более эффективным, поэтому рекомендуется оптимизировать запрос под вашу конкретную ситуацию.