TSQL计算百分比

时间:2012-10-25 04:03:19

标签: sql-server tsql

我在健康俱乐部的SQL Server数据库中有一个客户列表。 列出的客户包括他们加入的日期和他们续订的次数 我希望能够计算续订客户的百分比率。有关如何做到这一点的任何想法?感谢。

2 个答案:

答案 0 :(得分:4)

如果某个表subscriptions每个用户只有一行,则会使用isrenewed位进行更新:

 SELECT 
    SUM(SIGN(isrenewed)) * 100 / COUNT(*) 
    AS Percentage
    FROM subscriptions

输出

 Percentage
 ---------------
 66,666666

如果要对表达式进行舍入,可以将其转换为int

 SELECT 
    CAST(
      SUM(SIGN(isrenewed)) * 100 / COUNT(*) 
      AS int)
    AS Percentage
    FROM subscriptions

输出

 Percentage
 ---------------
 66

如果您的表subscriptions具有特定于用户的列userid,其中有两行意味着订阅已续订:

SELECT 
  (SELECT TOP 1 COUNT(*) OVER() 
    FROM subscriptions
    GROUP BY userid
    having COUNT(*) > 1) 
  * 100 / COUNT(*) AS Percentage
  FROM subscriptions

答案 1 :(得分:1)

这就是你要找的东西

Declare @t table(Id Int Identity,CustomerName Varchar(50),DOJ Datetime,IsRenewed bit)
Insert Into @t Values('Name1','1/1/2012',1),('Name2','10/1/2012',1),('Name3','10/2/2012',0)

Select PercentageCustomerRenewed = 
Cast((Count(*) * 100) / (Select Count(*) From @t ) AS Numeric(10,2))  
From @t 
where IsRenewed = 1

<强>结果

PercentageCustomerRenewed
66.00