У меня есть таблица, похожая на следующую (конечно, с большим количеством строк и полей):
category_id | client_id | date | step
1 1 2009-12-15 first_step
1 1 2010-02-03 last_step
1 2 2009-04-05 first_step
1 2 2009-08-07 last_step
2 3 2009-11-22 first_step
3 4 2009-11-14 first_step
3 4 2010-05-09 last_step
Я хотел бы преобразовать это так, чтобы я мог рассчитать время между первым и последним шагами ив конечном итоге найти среднее время между первым и последним этапами и т. д. В принципе, я нахожусь в тупике, как преобразовать приведенную выше таблицу в нечто вроде:
category_id | first_date | last_date
1 2009-12-15 2010-02-03
1 2009-04-05 2009-08-07
2 2009-11-22 NULL
3 2009-11-14 2010-05-09
Любая помощь будет оценена.* С помощью OMG Ponies вот решение:
SELECT t.category_id,
MIN(t.date) AS first_date,
CASE
WHEN COUNT(*) >= 2 THEN MAX(t.date)
ELSE NULL
END AS last_date
FROM TABLE t
GROUP BY t.category_id, t.client_id