...etc. What I want to do is take that and get the average value for the "events" column per object, but also include rows with no events/objects, since those represent minutes in which nothing happened and thus should contribute a zero to the average. Seems like I would have to write some complicated GROUP BY clause that includes all rows with object = NULL in each group, but I'm lost as to how to do that.

Sorry, should have been more clear. This is the result of the query I perform by joining the temporary time_intervals table with the events and objects table. I want to then take that query and group the results by objects.id, but also include all results with no object in each group.

So, the group for object1 would include all rows with object = NULL, as would the group for object2, object3, etc. This is so when calculating, say, the average number of events per minute, the zero-values are also calculated so the average is legitimate.