如何在SQL中使用COUNT转换为百分比?

如何在SQL中使用COUNT转换为百分比?,sql,percentage,Sql,Percentage,例如,如果我想在“雇员”表中列出男性和女性的百分比。 是这样吗 SELECT Sex, COUNT (Sex) AS [%] FROM Employees GROUP BY Sex; 如果我想列出低于50%的性别呢?以下是正确的吗 SELECT Sex, COUNT (Sex) AS [%] FROM Employees GROUP BY Sex HAVING COUNT (Sex) < 50% 选择性别,将(性别)计数为[%] 来自员工 按性别分组 计数(性别)

例如,如果我想在“雇员”表中列出男性和女性的百分比。 是这样吗

SELECT Sex, COUNT (Sex) AS [%]
FROM Employees
GROUP BY Sex;
如果我想列出低于50%的性别呢?以下是正确的吗

SELECT Sex, COUNT (Sex) AS [%]
FROM Employees
GROUP BY Sex
HAVING COUNT (Sex) < 50%
选择性别,将(性别)计数为[%]
来自员工
按性别分组
计数(性别)<50%

谢谢。

否。大多数SQL版本都支持窗口函数。您可以使用以下公式计算百分比:

SELECT Sex, COUNT(Sex)/(sum(count(sex)) over ()) AS [%]
FROM Employees
GROUP BY Sex;
(我将省略
100*
,因为我不确定您想要的是介于0和100之间的百分比还是介于0和1之间的概率。)

某些版本的SQL进行整数除法,在这种情况下,需要将其转换为十进制或浮点:

SELECT Sex, cast(COUNT(Sex) as float)/(sum(count(sex)) over ()) AS [%]
FROM Employees
GROUP BY Sex;

我相信这就是你要找的

SELECT Sex, (Count(Sex)* 100 / (SELECT Count(*) FROM Employees)) as MyPercentage
FROM Employees
GROUP BY Sex
那你就可以了

HAVING MyPercentage < 50
我的百分比<50

您试过了吗?我认为这行不通。您要查找的百分比是计数除以答案数,再乘以100的结果。如果没有子查询,我认为这是不可能的,因为列类型是什么?一点VARCHAR?您使用的RDBMS和版本是什么?不,我没有。我在研究旧试卷,我看到了这样的答案。我很好奇%可以在SQL中以这种方式使用。你能用你说的方式回答吗?我不知道怎么写。谢谢。为什么要加倍计数呢?:
(COUNT(COUNT(COUNT(sex))over())
我想他是想得到总数(COUNT()),换句话说,就是员工人数。但它是无效的,因为您不能以这种方式使用聚合函数@克里斯托弗·巴尔斯正确地回答了这个问题answered@Utopik实际上,你可以通过
OVER()
使用聚合函数,但克里斯托弗的解决方案更具可移植性。@JoachimIsaksson你是对的,我只是将“不能”改为“不应该”:(或者不,我不能再编辑了)@Utopik。这不仅是正确的。在支持窗口功能的数据库中,此版本可能更快。而且,如果数据库支持ANSI标准windows函数,则允许使用此语法。它算起来是可移植的。是否必须在末尾包含['%',否则结果将只是一个没有“%”符号的数字?此解决方案中的结果只是一个值,因此不包含百分号