Simple SQL that I am stuck on

2020-05-09 18:21发布

What percent of customers are reward members?

ID                 Reward Member
1                       y
2                       y
3                       n
4                       y
5                       n

标签: sql
3条回答
家丑人穷心不美
2楼-- · 2020-05-09 18:42

I would use conditional aggregation:

select avg( case when rewardmember = 'y' then 1.0 else 0 end) as ratio
from t;

Some databases allow shorter syntax, such as:

select avg( rewardmember = 'y' )
from t;

or:

select avg( (rewardmember = 'y')::int )
from t;
查看更多
Luminary・发光体
3楼-- · 2020-05-09 18:58

You can use COUNT():

select
  1.0 *
  count(case when reward_member = 'y' then 1 else 0 end)
  / count(*) 
from t
查看更多
放荡不羁爱自由
4楼-- · 2020-05-09 19:07

Count how many are members, divide by total number of customers and multiply by 100.

SELECT sum(case when RewardMember = 'y' then 1 else 0 end)*100.0/count(*) as percentage
FROM Customers
查看更多
登录 后发表回答