GroupBy并获得每个的百分比

时间:2014-04-18 12:49:01

标签: mysql sql

我有这样的SQL表:

**CLIENTS:**
id
country

我想回复一张表格,其中包含我所拥有的所有国家/地区的百分比。

例如,如果我的桌子上有2个加拿大人和1个法国人,我想要:

1 - Canada - 66%

2 - France - 33%

我尝试了什么:

SELECT country FROM `mytable` GROUP BY `Country`;

它有效,但如何获得每个的百分比?

感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用子查询:

SELECT
    country,
    COUNT(id) * 100 / (SELECT COUNT(id) FROM `mytable`) AS `something`
FROM
    `mytable`
GROUP BY
    `Country`;

答案 1 :(得分:0)

您没有指定SQL的功能,但几年前microsoft posted their suggested solution

select au_id
      ,(convert(numeric(5,2),count(title_id))
      /(Select convert(numeric(5,2),count(title_id)) from titleauthor)) * 100 
       AS "Percentage Of Total Titles"
 from titleauthor group by au_id
  

计算组中包含的总记录的百分比   是一个可以计算的简单结果。除以记录数   通过表中的记录总数在组中聚合,   然后将结果乘以100.这正是   前面的查询呢。这些要点更详细地解释了查询   细节:

     
      
  1. 内部嵌套查询返回的记录总数   TitleAuthor表:[选择转换(数字(5,2),计数(title_id))   titleauthor]
  2.   
  3. COUNT(title_id)在外部返回的值   GROUP BY查询返回特定的标题数   作者。
  4.   
  5. 步骤2中返回的值除以返回的值   在步骤1中,结果乘以100来计算和显示   每个作者写的标题总数的百分比。
  6.   
  7. 嵌套的SELECT对外部返回的每一行执行一次   GROUP BY查询
  8.   
  9. CONVERT函数用于转换值   由COUNT聚合函数返回到数值数据类型   精度为5,等级为3,以达到所需的水平   精度。
  10.