Как вернуть записи из каждой группы с минимальной датой создания?

Чтобы вернуть записи из каждой группы с минимальной датой создания в 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.

Оба этих способа позволяют выбрать записи из каждой группы с наименьшей датой создания. В зависимости от вашей БД и ваших требований, один из этих способов может быть более эффективным, поэтому рекомендуется оптимизировать запрос под вашу конкретную ситуацию.