【问题标题】:How to accurately figure percentage of a finite total如何准确计算有限总数的百分比
【发布时间】:2014-01-15 18:17:10
【问题描述】:

我正在创建一个报告,该报告将告诉最终用户在给定月份内完成了多少百分比的网格视图(记录的总数是有限的)。我有一个带有已导入记录的网格视图,用户必须进入每条记录并更新几个字段。我正在尝试创建一个报告,告诉我在给定月份内完成的记录总数的百分比。我需要的只是百分比。总计(对于此示例)为 2000。

我不确定此处是否需要实际的 gridview 信息/代码,但如果需要,请告诉我,我会添加它。

问题是我已经能够计算总百分比,但是当它显示时,表中的每一行都会重复百分比总和。我正在为如何让这个结果只出现一次而摸不着头脑。

现在这是我的 SQL 代码(我使用 nvarchar,因为我们从许多非 Windows 系统导入并获取各种额外字符并在我们的信息中添加空格):

Declare @DateCount nvarchar(max);
Declare @DivNumber decimal(5,1);

SET @DivNumber = (.01 * 2541);
SET  @DateCount = (SELECT (Count(date_record_entered) FROM dbo.tablename WHERE date_record_entered IS NOT NULL and date_record_entered >= 20131201 AND date_record_entered <= 20131231); 

SELECT CAST(ROUND(@DivNumber / @DateCount, 1) AS decimal(5,1) FROM dbo.tablename

假设在这个例子中,date_record_entered 中 12 月份的记录总数为 500。

我已经分别尝试了较小的代码段,但没有成功。这是我最近尝试过的。

我知道我在这里遗漏了一些简单的东西,但我不确定是什么。

::edit::

作为查询的预期结果,我正在寻找的是在给定月份中修改记录的百分比。如果完成 500 条记录,那将是 25%。我只想让 25(以及适用时的训练小数)显示一次,而不是在此表中的每一行显示 25。

【问题讨论】:

  • 您能否提供您的数据样本和查询的预期结果?
  • 你具体在寻找什么@wdosanjos?
  • dbo.tablename 表中的一些示例行和SELECT 语句的预期结果。获得这些信息后,我可以尝试提供解决方案。
  • 更新了本帖的第一篇文章。

标签: sql sql-server gridview sql-server-2012


【解决方案1】:

以下查询应提供您要查找的内容:

Declare @DivNumber decimal(5,1);

SET @DivNumber = (.01 * 2541);

SELECT 
    CAST(ROUND(@DivNumber / Count(date_record_entered), 1) AS decimal(5,1))
  FROM dbo.tablename 
 WHERE date_record_entered IS NOT NULL 
   and date_record_entered >= 20131201 
   AND date_record_entered <= 20131231

【讨论】:

  • 做到了。在这个上完全旋转我的轮子。谢谢!
【解决方案2】:

为什么要从表中选择常量值cast(round(@divNumber / @DateCount, 1) as decimal(5,1)?这就是你的问题的原因。 我对 sql server 不太熟悉,但您可以尝试不带 from 子句的 select。

【讨论】:

    【解决方案3】:
    select emp.Natinality_Id,mstn.Title as Nationality,count(emp.Employee_Id) as Employee_Count,
    count(emp.Employee_Id)* 100.0 /nullif(sum(count(*)) over(),0)  as Nationality_Percentage
    FROM Employee as emp
    left join Mst_Natinality as mstn on mstn.Natinality_Id = emp.Natinality_Id
    where
    emp.Is_Deleted='false'
    group by emp.Natinality_Id,mstn.Title
    

    【讨论】:

      猜你喜欢
      • 2019-01-26
      • 2018-03-24
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多