-- routes, sorted by quality index
SELECT gateway, avg(duration) / 60 as TQI, count(*) as count FROM (
SELECT * FROM (
( SELECT gateways.description as gateway, calls.duration as duration
FROM calls, gateways
WHERE call_start > NOW() - INTERVAL 4 hour AND
calls.id_route = gateways.id_route ) AS calls_answered
)
UNION ALL
SELECT * FROM (
( SELECT gateways.description as gateway, 0 as duration
FROM callsfailed, gateways
WHERE call_start > NOW() - INTERVAL 4 hour AND
callsfailed.id_route = gateways.id_route ) AS calls_failed
)
) AS MainTable
GROUP BY (gateway)
ORDER BY TQI desc;