Ese es el comportamiento normal y esperado del UNION: Cuando se encuentran dos registros con los mismos valores, genera un DISTICT por default.
Tu problema tiene mas de una solución. La mas simple es:
Código SQL:
Ver originalSELECT ID, SUM(Total) Total
FROM
(SELECT id, COUNT(*) Total
FROM ...
...
UNION ALL
SELECT id, COUNT(*) Total
FROM ...
...) Tabla
GROUP BY ID