我有一个健康俱乐部的SQL Server数据库中的客户列表。 客户列出了他们加入的日期和更新的次数 我希望能够计算续订客户的百分比率。关于如何做到这一点的任何想法?谢谢。TSQL计算百分比
回答
这是你正在寻找
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
您可以发布样本数据,并期望outout ..所以你可以很容易地得到解决方案 –
这是我迄今为止。我可以使查询的第一部分工作,但我无法正确地将两个select语句组合在一起。 - 第1部分:RenewalCount =次数 - 每个客户续订 SELECT * FROM (SELECT JoinDate,RenewalCount,YEAR(getdate()) - YEAR(JoinDate) - CASE WHEN MONTH(GETDATE())> MONTH GETDATE()) 或者MONTH(GETDATE())= MONTH(GETDATE())和DAY(GETDATE())> = DAY(GETDATE())then 0 else 1 end AS PotentialRenewal FROM Table)percRenewal --Part 2 选择100.0 * SUM(更新)/ SUM(潜在更新) 从表AS percRenewal – steve
如果有一个表subscriptions
每个用户只有一行,是被带着几分isrenewed
更新:
SELECT
SUM(SIGN(isrenewed)) * 100/COUNT(*)
AS Percentage
FROM subscriptions
输出
Percentage
---------------
66,666666
如果你想圆表达
Percentage
---------------
66
如果你有一个表subscriptions
用户特定的列userid
这里有你可以将它转换为int
SELECT
CAST(
SUM(SIGN(isrenewed)) * 100/COUNT(*)
AS int)
AS Percentage
FROM subscriptions
输出两排意味着订阅被续订:
SELECT
(SELECT TOP 1 COUNT(*) OVER()
FROM subscriptions
GROUP BY userid
having COUNT(*) > 1)
* 100/COUNT(*) AS Percentage
FROM subscriptions
- 1. TSQL帮助计算百分比
- 2. 计算百分比
- 3. 计算百分比
- 4. 计算百分比
- 5. 计算百分比
- 6. 计算百分比
- 7. 计算百分比
- 8. 对总气柱MSSQL 2008R2 TSQL计算传动比百分比
- 9. 计算百分比总计
- 10. 百分比计算与行
- 11. Tableau百分比计算
- 12. SSRS - 计算百分比
- 13. Python百分比计算器
- 14. 计算百分比错误
- 15. 用PHP计算百分比
- 16. 计算进度百分比
- 17. 计算百分比SQLite中
- 18. 计算百分比的
- 19. SQL百分比计算
- 20. 计算月度百分比
- 21. SAP HANA计算百分比
- 22. 计算百分比在列
- 23. 计算时间百分比
- 24. 百分比计算在PHP
- 25. VBA计算百分比
- 26. MySQL计算百分比
- 27. C计算百分比#
- 28. 如何计算百分比
- 29. 计算百分比c#
- 30. 计算VB.NET的百分比
你怎么知道他们没有?每个客户的到期日期?或者所有成员资格都是相同的长度,例如一个月?你是否在意他们的会员资格是不连续的? – HABO
闻起来像功课。 – invert
@invert是否会使问题变得更加有效? –