WITH zoom AS ( select generate_series(0,2) as Z ), range AS ( select z, generate_series(0, pow(2,z)::int-1) as r FROM zoom), inp AS ( select z0.z, r1.r as x, r2.r as y FROM zoom z0, range r1, range r2 WHERE z0.z = r1.z and r1.z = r2.z ), ext AS ( select x,y,z,CDB_XYZ_Extent(x,y,z) as g from inp ) select X::text || ',' || Y::text || ',' || Z::text as xyz, round(st_xmin(g)), round(st_xmax(g)), round(st_ymin(g)), round(st_ymax(g)) from ext order by xyz;