我有这样的SQL表:
**CLIENTS:**
id
country
我想回复一张表格,其中包含我所拥有的所有国家/地区的百分比。
例如,如果我的桌子上有2个加拿大人和1个法国人,我想要:
1 - Canada - 66%
2 - France - 33%
我尝试了什么:
SELECT country FROM `mytable` GROUP BY `Country`;
它有效,但如何获得每个的百分比?
感谢。
答案 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.这正是 前面的查询呢。这些要点更详细地解释了查询 细节:
- 内部嵌套查询返回的记录总数 TitleAuthor表:[选择转换(数字(5,2),计数(title_id)) titleauthor]
- COUNT(title_id)在外部返回的值 GROUP BY查询返回特定的标题数 作者。
- 步骤2中返回的值除以返回的值 在步骤1中,结果乘以100来计算和显示 每个作者写的标题总数的百分比。
- 嵌套的SELECT对外部返回的每一行执行一次 GROUP BY查询
- CONVERT函数用于转换值 由COUNT聚合函数返回到数值数据类型 精度为5,等级为3,以达到所需的水平 精度。
醇>