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