3

ヘルスクラブのSQLServerデータベースに顧客のリストがあります。顧客は、参加した日付と更新した回数とともに一覧表示されます。更新した顧客の割合を計算できるようにしたいと思います。これをどのように行うことができるかについてのアイデアはありますか?ありがとう。

4

2 に答える 2

5

subscriptionsユーザーごとに1行しかないテーブルがある場合、それはビットで更新されます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あり、行が 2 つある場合は、サブスクリプションが更新されたことを意味します。

SELECT 
  (SELECT TOP 1 COUNT(*) OVER() 
    FROM subscriptions
    GROUP BY userid
    having COUNT(*) > 1) 
  * 100 / COUNT(*) AS Percentage
  FROM subscriptions
于 2012-10-25T04:54:25.040 に答える
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
于 2012-10-25T04:50:51.657 に答える