使用MySQL的列组的百分比总数

时间:2016-01-08 13:40:14

标签: mysql

如果我有一张包含以下内容的表格:

www.domain.com/test
www.domain.com/test/another-test
www.domain.com/test/another-test/new-level

如何返回每个国家/地区的百分比:

+---------+-------------+
| Country | campaign_id |
+---------+-------------+
| US      |           1 |
| FR      |           1 |
| FR      |           1 |
| UK      |           1 |
| NL      |           2 |
| DE      |           2 |
+---------+-------------+

这是我到目前为止的地方:

+---------+------------+
| Country | Percentage |
+---------+------------+
| US      | 25         |
| FR      | 50         |
| UK      | 25         |
+---------+------------+

请注意,如果更容易,则可以返回0.25。

3 个答案:

答案 0 :(得分:1)

编写子查询以获取广告系列中的总行数,然后将其划分为按国家/地区分组的行数。

SELECT a.country, ROUND(100 * COUNT(*)/b.total, 2) AS percentage
FROM yourTable AS a
CROSS JOIN (
  SELECT COUNT(*) AS total
  FROM yourTable
  WHERE campaign_id = 1) AS b
WHERE a.campaign_id = 1
GROUP BY a.country

DEMO

答案 1 :(得分:1)

您已经给出了什么(看起来像是计算具有特定ID的国家/地区):

SELECT country, ((COUNT(campaign_id)*100)/(SELECT SUM(campaign_id) FROM campaigns WHERE campaign_id = 1)) AS percent
FROM campaigns
WHERE campaign_id = 1
GROUP BY country

答案 2 :(得分:1)

这是我的案例解决方案:

SELECT Country,
        (campaign_id/((select SUM(campaign_id) FROM table1 where campaign_id = 1))*100) as percentage
FROM tablename
WHERE campaign_id = 1
GROUP BY Country, campaign_id