select ttt.country,sum(ttt.townNum),sum(ttt.villageNum),sum(ttt.accountNum),sum(ttt.deskAreaNum),sum(ttt.orgNum) from (SELECT
tt.country,count(DISTINCT tt.town)AS townNum,count(DISTINCT tt.village)AS villageNum,0 as accountNum,0 as deskAreaNum,0 as orgNum
FROM
(
SELECT
t2.country,
t2.town,
t2.village
FROM
dc_cumulative_outage_list_detail t1
INNER JOIN dc_desk_area_info t2 ON t1.desk_area_id = t2.desk_area_id
INNER JOIN dc_cumulative_outage_list t3
ON t1.cumulative_outage_list_id=t3.id
WHERE
t1.is_deleted =0
AND t2.is_deleted =0
AND (
t1.type =3
or
(t1.type =4
AND t1.is_power_failure='是')))tt
GROUP BY
tt.country
UNION
SELECT
t2.country,0 as townNum,0 as villageNum,sum(t2.low_voltage_users) as accountNum,0 as deskAreaNum,0 as orgNum
FROM
dc_cumulative_outage_list_detail t1
INNER JOIN dc_desk_area_info t2 ON t1.desk_area_id = t2.desk_area_id
INNER JOIN dc_cumulative_outage_list t3
ON t1.cumulative_outage_list_id=t3.id
WHERE
t1.is_deleted =0
AND t2.is_deleted =0
AND (
t1.type =3 or t1.type=2
or (t1.type=4 and t1.is_power_failure='是'))
GROUP BY t2.country
UNION
SELECT
t2.country,0 as accountNum,0 as deskAreaNum,0 as accountNum,count(DISTINCT t1.desk_area_id) as deskAreaNum,count(DISTINCT t1.org) as orgNum
FROM
dc_cumulative_outage_list_detail t1
INNER JOIN dc_desk_area_info t2 ON t1.desk_area_id = t2.desk_area_id
INNER JOIN dc_cumulative_outage_list t3
ON t1.cumulative_outage_list_id=t3.id
WHERE
t1.is_deleted =0
AND t2.is_deleted =0
AND (
t1.type =3
or (t1.type=4 and t1.is_power_failure='是'))
GROUP BY t2.country) ttt GROUP BY ttt.country