我正在寻找以下问题的 sql 语句: 这是我的表格的摘录
'from_city' 'to_city'
New York Boston
Chicago New York
New York Los Angeles
Dallas San Francisco
Miami New York
Dallas Los Angeles
预期的结果应该是这样的:
City Count Percentage
New York 4 33%
Los Angeles 2 17%
Dallas 2 17%
San Francisco 1 8%
Miami 1 8%
Chicago 1 8%
Boston 1 8%
所以我需要合并我能够使用的“from_city”和“to_city”两列:
(SELECT from_city AS City FROM table) UNION
(SELECT to_city AS City FROM table)
但现在我不知道如何在结果集上应用计数和百分比。 你能帮帮我吗?
提前致谢!
最佳答案
你可能想使用子查询:
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
-请注意,在一般情况下,双重计数将不起作用(因此使用两列的计数总和)检查 demo .
此外,您还没有指定百分比格式 - 即其中应该包含多少个符号(因为它可能是非整数) - 所以我将其保留原样
关于Mysql:用计数联合两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22536475/