【问题标题】:Count of rows matching string in SybaseSybase中匹配字符串的行数
【发布时间】:2020-03-03 23:37:57
【问题描述】:

我有一个包含三列的表,第一列是 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

如果有人能提供帮助,我将不胜感激。

【问题讨论】:

    标签: sql group-by pivot sap-iq


    【解决方案1】:

    您可以进行条件聚合。 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
    

    【讨论】:

    • 认为 Sybase 进行整数平均。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    相关资源
    最近更新 更多