Agrupar registros por tiempo.

Tengo una tabla que contiene una columna de fecha y hora y algunas otras columnas misceláneas. La columna de fecha y hora representa un evento que ocurre. Puede contener una hora (el evento ocurrió en ese momento) o NULL (el evento no ocurrió)

Ahora quiero contar el número de registros que ocurren en intervalos específicos (15 minutos), pero no sé cómo hacerlo.

ejemplo:

id | time                | foreign_key
1  | 2012-01-01 00:00:01 | 2
2  | 2012-01-01 00:02:01 | 4
3  | 2012-01-01 00:16:00 | 1
4  | 2012-01-01 00:17:00 | 9
5  | 2012-01-01 00:31:00 | 6

Ahora quiero crear una consulta que cree un conjunto de resultados similar a:

interval            | COUNT(id)
2012-01-01 00:00:00 | 2
2012-01-01 00:15:00 | 2
2012-01-01 00:30:00 | 1

¿Es esto posible en SQL o puede alguien recomendar qué otras herramientas podría usar? (por ejemplo, exportar los datos a un programa de hoja de cálculo no sería un problema)