当前位置: 首页 > 面试题库 >

SQL-总行数百分比

房星光
2023-03-14
问题内容

我有这个查询:

SELECT 
Count(*) as Cnt, 
Category
FROM [MyDb].[dbo].[MyTable]
group by Category
order by Cnt

它给了我每一行的计数Category。现在,我想添加第三列,这将给我带来帮助Cnt / (total rows in this table)

我怎样才能做到这一点?


问题答案:

您可以使用子查询来做到这一点:

SELECT Count(*) as Cnt, Category, 
  (Cast(Count(*) as real) / cast((SELECT Count(*) FROM [MyDb].[dbo].[MyTable]) as  real)) AS [Percentage]
FROM [MyDb].[dbo].[MyTable]
group by Category
order by Cnt

或带有变量:

declare @total real;
select @total = count(*) from [MyDb].[dbo].[MyTable];

SELECT Count(*) as Cnt, Category, (Cast(Count(*) as real) / @total) AS [Percentage]
FROM [MyDb].[dbo].[MyTable]
group by Category
order by Cnt

在两个示例中,我都将count(*)转换为实数,以避免整数除法类型问题。

希望这对约翰有帮助



 类似资料:
  • 问题内容: 我有一个典型的客户/订单中设置的表,我想显示总 百分比 销售的特定客户负责。我可以像这样获得系统中的订单总数: 这样我就可以得到客户发出的订单总数: 如何将它们组合成一个查询,以返回特定客户的销售百分比?谢谢! 问题答案: MySQL: 编辑 我想如果我注意到 postgres 标签会有所帮助。我认为这是一个MySQL问题。 PostgreSQL: PS我的PostgreSQL生锈了,

  • 问题内容: 我有一个MSSQL表存储,该存储在表中具有以下列: 有人可以帮我进行SQL查询,以产生占雇员总数(NumEmployees)30%的顶级商店(storeID)吗? 问题答案: WITH cte AS (SELECT storeid, numemployees, ( numemployees * 100 ) / SUM(numemployees) OVER (PARTITION BY 1

  • 问题内容: 我正在使用SQL Server 2008 R2。我需要计算每个组的百分位数值,例如: 例如,给定此DDL(fiddle)- -–我大致希望(在普通百分位数方法的变化范围内)以下内容: 实际的输入集大约有200万行,每个实际的组都有几十到几百(甚至更多)行。 我已经在SO和其他站点上探索了解决方案,但似乎我检查的十几个页面中的解决方案仅适用于计算整个行集而不是行集的每个组/分区的百分位。

  • 这显然很简单,但作为一个新手,我被卡住了。 我有一个CSV文件,其中包含3列:州、办公室ID和该办公室的销售额。 我想计算给定州每个办公室的销售额百分比(每个州所有百分比的总和为100%)。 这返回: 我似乎不知道如何“达到”级别,以总计整个的来计算分数。

  • 问题内容: 我有这些结果: 与表类似: 这些按人分组。现在,我希望添加一列,其中包含根据每个人的总和计算得出的每个人的百分比。 例如:总和为300,因此我需要这样的结果: 我在网上查看了代码,并提出了这样的解决方案: 但是我不确定如何将交叉联接以及已经存在的分组/求和部分合并到联接中。或者这是否完全正确。 任何帮助将不胜感激- SQL小提琴http://sqlfiddle.com/#!9/80f9

  • 问题内容: 这显然很简单,但是作为一个笨拙的新手,我陷入了困境。 我有一个包含3列的CSV文件,分别是该办公室的州,办公室ID和销售。 我想计算给定状态下每个办公室的销售百分比(每个州的所有百分比的总和为100%)。 返回: 我似乎无法弄清楚如何“高达”的水平与总起来对整个计算分数。 问题答案: 你将不得不创建第二个对象,但是你可以以一种更简单的方式来计算百分比-仅计算并将该列除以其和即可。复制P