I have a PostgreSQL table with a structure like this
id    elementid    timestamp                providerid    x    y
1     1            2014-10-01T00:00:00Z     12           12   18
2     1            2014-10-01T00:10:00Z     12           14   18
3     1            2014-10-01T00:15:00Z     12           16   20
4     2            2014-10-01T00:50:00Z     12           12   18
5     2            2014-10-01T01:10:00Z     12           14   18
6     2            2014-10-01T01:15:00Z     12           16   20
7     7            2014-10-01T00:00:00Z     14           12   18
8     7            2014-10-01T00:10:00Z     14           14   18
9     7            2014-10-01T00:15:00Z     14           16   20
And I want to count the number of different elementid belonging to the same providerid per hour and position. 
An example
Between 00:00 and 01:00, in the box defined by xmin=12, ymin=18, xmax=16, ymax=20, there are 2 elements belonging to providerid 12 (4 first records: element with elementid = 1 and element with elementid = 2). So, the count is 2 elements per hour, for providerid = 12.
As you can see, I'm really dealing with moving elements. So, in that time frame (1 hour), I get the element 1 in 3 different positions and the element 2 in one position. So, a total of 2 elements, belonging to the same provider (providerid = 12).
Then, my resultset should look like this:
providerid              start_time                end_time    num_elements
        12    2014-10-01T00:00:00Z    2014-10-01T01:00:00Z               2
And I want the same for each provider.
I guess the response is similar to this one, this one or this one, but still didn't find the solution. Any help is really appreciated.
Many thanks in advance!