sql - Sybase中匹配字符串的行数
问题描述
我有一个包含三列的表,第一列是 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
推荐阅读
- android - Task.leftShift(Closure) 方法已被弃用,并计划在 Gradle 5.0 中删除
- javascript - 如何在没有 JQuery 的情况下调用 Bootstrap 的折叠方法
- c# - 当名称相似时从一个按钮更改为另一个按钮
- android - 如何将 Fragment 添加为 ConstraintLayout?
- ios - TableView 数组部分自行重新排序?(程序修复?)
- python - 如何向量化一个for循环,对n个数组进行元素乘法?
- android - 进度对话框的 IncrementProgressBy 未按预期工作
- c# - 如何模拟 linq 的 case-when?
- sql - 我需要获取包含图书总数的主题名称
- arrays - 处理 csv 的 UnicodeDecodeError