Sybase 中匹配字符串的行数
Count of rows matching string in Sybase
我有一个包含三列的 table,第一列是 member_id,第二列是月份索引,第三列是具有三个不同值的分类变量。
我的数据如下:
member_id refill_month MEMBER_TYPE
454723 0 RETAINED
454723 1 RETAINED
454723 2 RETAINED
454723 4 LAGGER
454723 7 RETAINED
454723 9 RETAINED
454723 11 LOST
456279 0 RETAINED
456279 2 LOST
457100 1 RETAINED
457100 2 RETAINED
457100 3 RETAINED
457100 4 RETAINED
457100 5 RETAINED
457100 6 RETAINED
457100 7 RETAINED
457100 8 RETAINED
457100 9 LAGGER
457100 12 LOST
我想要一个 member_id 的计数,其中每个 refill_month 的 MEMBER_TYPE = 'RETAINED' 除以该月所有 member_id 的计数
这就是我想要得到的,但我认为不可能在 Sybase 的 select 语句中包含 where 子句。
SELECT
refill_month,
count(member_id where MEMBER_TYPE=’RETAINED’)/count(member_id) AS retention
如果有人能提供帮助,我将不胜感激。
您可以进行条件聚合。 avg()
可以方便地计算符合给定条件的行的比率:
select
refill_month,
avg(case when member_type = 'RETAINED' then 1.0 else 0 end) retention
from mytable
group by refill_month
order by refill_month
我有一个包含三列的 table,第一列是 member_id,第二列是月份索引,第三列是具有三个不同值的分类变量。
我的数据如下:
member_id refill_month MEMBER_TYPE
454723 0 RETAINED
454723 1 RETAINED
454723 2 RETAINED
454723 4 LAGGER
454723 7 RETAINED
454723 9 RETAINED
454723 11 LOST
456279 0 RETAINED
456279 2 LOST
457100 1 RETAINED
457100 2 RETAINED
457100 3 RETAINED
457100 4 RETAINED
457100 5 RETAINED
457100 6 RETAINED
457100 7 RETAINED
457100 8 RETAINED
457100 9 LAGGER
457100 12 LOST
我想要一个 member_id 的计数,其中每个 refill_month 的 MEMBER_TYPE = 'RETAINED' 除以该月所有 member_id 的计数
这就是我想要得到的,但我认为不可能在 Sybase 的 select 语句中包含 where 子句。
SELECT
refill_month,
count(member_id where MEMBER_TYPE=’RETAINED’)/count(member_id) AS retention
如果有人能提供帮助,我将不胜感激。
您可以进行条件聚合。 avg()
可以方便地计算符合给定条件的行的比率:
select
refill_month,
avg(case when member_type = 'RETAINED' then 1.0 else 0 end) retention
from mytable
group by refill_month
order by refill_month