You may want to use subquery:
SELECT
city,
COUNT(1) AS c,
CONCAT(100*COUNT(1)/sums.total, '%') AS p
FROM
(SELECT from_city AS city FROM t
UNION ALL
SELECT to_city FROM t) AS cities
CROSS JOIN
(SELECT
COUNT(from_city)
+COUNT(to_city) AS total
FROM t) AS sums
GROUP BY
city
ORDER BY
c DESC
-note, that double count won't work in common case (thus used sum of counts by both columns) Check the demo.
Also you've not specified format of percentage - i.e. how many signs should be in it (because it may be non-integer) - so I've left it as it is