Хорошо, так вот вызов для всех вас, профессионалов SQL:
У меня есть таблица с двумя интересными колонками, группой и датой рождения. Только некоторым строкам назначена группа.
Теперь я хочу напечатать все строки, отсортированные по дате рождения, но я также хочу, чтобы все строки в одной группе находились рядом друг с другом. Единственный полусмысленный способ сделать это - использовать средние даты рождения групп для всех строк в группе при сортировке. Вопрос в том, можно ли это сделать с помощью чистого SQL (в данном случае MySQL), или потребуется некоторая логика сценариев?
Для иллюстрации приведем таблицу:
id | group | birthdate
---+-------+-----------
1 | 1 | 1989-12-07
2 | NULL | 1990-03-14
3 | 1 | 1987-05-25
4 | NULL | 1985-09-29
5 | NULL | 1988-11-11
и скажем, что "среднее" для 1987-05-25 и 1989-12-07 - это 1988-08-30 (это можно найти путем усреднения UNIX-эквивалентов дат по времени и последующей конвертации обратно в дату Это среднее не должно быть полностью правильным!).
Выходные данные должны быть:
id | group | birthdate | [sort_by_birthdate]
---+-------+------------+--------------------
4 | NULL | 1985-09-29 | 1985-09-29
3 | 1 | 1987-05-25 | 1988-08-30
1 | 1 | 1989-12-07 | 1988-08-30
5 | NULL | 1988-11-11 | 1988-11-11
2 | NULL | 1990-03-14 | 1990-03-14
Есть идеи?
Cheers,
Jon