MySQL: Obtener tabla con intervalos 30minutales a partir de otra con fechas


Tengo una tabla que consta de tres campos fecha con formato YYYY-MM-DD HH-MM-SS: in, out y near. Si existe in también ha de existir out, y ambas dos pueden ir acompañadas o no de near; near puede existir por sí sola. No cabe la posibilidad de que las tres sean NULL; por ejemplo:

id in_time             out_time            near_time 1  2019-10-02 10:46:31 2019-10-02 12:34:43 2019-10-02 09:51:57 2  NULL                NULL                2019-10-02 11:51:08 3  2019-10-02 12:02:40 2019-10-02 12:08:56 NULL 

Y necesito convertirla en una tabla que para intervalos diarios de media hora cuente el número de in, out y near; tal que así:

id interval            qt_in qt_out qt_near 1  2019-10-02 08:30:00 1     0      2  2  2019-10-02 09:00:00 1     1      5 3  2019-10-02 09:30:00 2     0      3 

Es decir, necesito saber la cantidad de entradas, salidas y aproximaciones para cada día en tramos de media hora; es posible que haya registros en cualquier tramo, sea el [00:00 – 00:30], el [12:00 – 12:30] o el [23:30 – 24:00].

Gracias por adelantado.