TSQL计算百分比

ste*_*eve 3 t-sql sql-server

我的 SQL Server 数据库中有一个健身俱乐部的客户列表。列出了客户的加入日期和续订次数。我希望能够计算续订客户的百分比。关于我如何做到这一点有什么想法吗?谢谢。

Jan*_*Jan 5

如果有一个表subscriptions,每个用户只有一行,则该表会更新一点isrenewed

 SELECT 
    SUM(SIGN(isrenewed)) * 100 / COUNT(*) 
    AS Percentage
    FROM subscriptions
Run Code Online (Sandbox Code Playgroud)

输出

 Percentage
 ---------------
 66,666666
Run Code Online (Sandbox Code Playgroud)

如果你想对表达式进行四舍五入,可以将其转换为 int

 SELECT 
    CAST(
      SUM(SIGN(isrenewed)) * 100 / COUNT(*) 
      AS int)
    AS Percentage
    FROM subscriptions
Run Code Online (Sandbox Code Playgroud)

输出

 Percentage
 ---------------
 66
Run Code Online (Sandbox Code Playgroud)

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

SELECT 
  (SELECT TOP 1 COUNT(*) OVER() 
    FROM subscriptions
    GROUP BY userid
    having COUNT(*) > 1) 
  * 100 / COUNT(*) AS Percentage
  FROM subscriptions
Run Code Online (Sandbox Code Playgroud)