首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

每月事务处理用户占滚动12个月期间的用户比例,但具有分组- Postgres

要在PostgreSQL中计算每月事务处理用户占滚动12个月期间用户的比例,并且具有分组功能,可以使用窗口函数和CTE(Common Table Expressions)。以下是一个示例查询,假设你有一个名为transactions的表,其中包含user_idtransaction_date字段。

代码语言:javascript
复制
WITH monthly_users AS (
    SELECT
        DATE_TRUNC('month', transaction_date) AS month,
        user_id
    FROM
        transactions
    GROUP BY
        DATE_TRUNC('month', transaction_date),
        user_id
),
rolling_12_month_users AS (
    SELECT
        month,
        user_id
    FROM
        monthly_users
    WHERE
        month >= CURRENT_DATE - INTERVAL '11 month'
    GROUP BY
        user_id
    HAVING
        COUNT(DISTINCT DATE_TRUNC('month', transaction_date)) = 12
),
monthly_active_users AS (
    SELECT
        DATE_TRUNC('month', transaction_date) AS month,
        COUNT(DISTINCT user_id) AS active_users
    FROM
        transactions
    WHERE
        transaction_date >= CURRENT_DATE - INTERVAL '11 month'
    GROUP BY
        DATE_TRUNC('month', transaction_date)
),
monthly_total_users AS (
    SELECT
        month,
        COUNT(DISTINCT user_id) AS total_users
    FROM
        rolling_12_month_users
    GROUP BY
        month
)
SELECT
    ma.month,
    ma.active_users,
    mt.total_users,
    (ma.active_users::float / mt.total_users::float) * 100 AS percentage
FROM
    monthly_active_users ma
JOIN
    monthly_total_users mt
ON
    ma.month = mt.month
ORDER BY
    ma.month;

解释

  1. monthly_users: 这个CTE将事务按月份和用户ID分组,确保每个用户在每个月只计算一次。
  2. rolling_12_month_users: 这个CTE筛选出在过去12个月内有交易记录的用户,并确保这些用户在这12个月中每个月都有交易记录。
  3. monthly_active_users: 这个CTE计算每个月活跃的用户数(即在该月有交易记录的用户数)。
  4. monthly_total_users: 这个CTE计算每个月在滚动12个月期间内的总用户数。
  5. 最终查询: 将monthly_active_usersmonthly_total_users连接起来,并计算每个月活跃用户占总用户的百分比。

分组功能

如果你需要按某个字段(例如category)进行分组,可以在每个CTE中添加相应的GROUP BY子句,并在最终查询中进行相应的调整。

例如,如果你的transactions表有一个category字段,你可以这样修改查询:

代码语言:javascript
复制
WITH monthly_users AS (
    SELECT
        DATE_TRUNC('month', transaction_date) AS month,
        category,
        user_id
    FROM
        transactions
    GROUP BY
        DATE_TRUNC('month', transaction_date),
        category,
        user_id
),
rolling_12_month_users AS (
    SELECT
        month,
        category,
        user_id
    FROM
        monthly_users
    WHERE
        month >= CURRENT_DATE - INTERVAL '11 month'
    GROUP BY
        category,
        user_id
    HAVING
        COUNT(DISTINCT DATE_TRUNC('month', transaction_date)) = 12
),
monthly_active_users AS (
    SELECT
        DATE_TRUNC('month', transaction_date) AS month,
        category,
        COUNT(DISTINCT user_id) AS active_users
    FROM
        transactions
    WHERE
        transaction_date >= CURRENT_DATE - INTERVAL '11 month'
    GROUP BY
        DATE_TRUNC('month', transaction_date),
        category
),
monthly_total_users AS (
    SELECT
        month,
        category,
        COUNT(DISTINCT user_id) AS total_users
    FROM
        rolling_12_month_users
    GROUP BY
        month,
        category
)
SELECT
    ma.month,
    ma.category,
    ma.active_users,
    mt.total_users,
    (ma.active_users::float / mt.total_users::float) * 100 AS percentage
FROM
    monthly_active_users ma
JOIN
    monthly_total_users mt
ON
    ma.month = mt.month AND ma.category = mt.category
ORDER BY
    ma.month, ma.category;

这样,你就可以按月份和类别计算每月事务处理用户占滚动12个月期间用户的比例。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python实战项目——旅游数据分析(四)

.购买次数在1~5次之间用户比分析 1.按照用户进行分组 2.取出购买次数 3.过滤出1~5次用户 4.绘制饼图 df_frequency_gte_1 = df.groupby('author')[...,猜测:活动或者节假日造成… c7.每月活跃用户比 return_rate.T['active'].plot(figsize=(12,6)) plt.xlabel('时间(月)') plt.ylabel...('百分比') plt.title('每月活跃用户比分析') 在17年1月份活跃用户比较高,在0.5%,但是在1-2月份,急剧下降,猜测:春节影响,或者温度 结合历年1~2月份销量来看,都会出现一定比例下降...,再次验证我们猜测:春节影响 在18年2月和5月出现异常,门票销量下降,猜测:雨水或者台风影响 c8.每月回流用户比 return_rate.T['return'].plot(figsize=(12,6...)) plt.xlabel('时间(月)') plt.ylabel('百分比') plt.title('每月回流用户比分析') 整体来看,回流用户比例上升趋势,但是波动较大 在17年1月和6月,18

33510

大数据面试SQL045-每个用户每月访问次数比及累积

一、题目 有如下用户访问数据t_visit_stat_044,包含用户ID(user_id),访问日期(visit_date),当天访问次数(visit_cnt) 要求使用SQL统计出每个用户每月访问次数与其访问总次数比以及其累积到每个月访问次数总与其访问总次数比...| +----------+----------+----------------------+----------------------+ 二、分析 上一个题目,我们统计出了每个月访问次数...想要实现每个用户本月访问次数总访问次数比例,需要计算出每个用户访问总次数;想要计算出累积访问次数总访问次数比例,也需要计算出每个用户访问总次数;但是这里有个问题,需要将sum()结果放到每一行...group by user_id, substr(visit_date, 0, 7) ) t 查询结果 查询最后结果,需要将month_visit/total_all_count即为每个用户每月访问次数其总次数比例...其中在over()函数内,如果存在order by 语句,则是计算从分组第一个数据累积到当前行数据聚合结果,如果没有order by语句,则计算整个分组聚合结果。

16810
  • KSN安全报告:勒索软件和恶意矿工威胁景观(2016~2018)

    爱尔兰 0.68% 德国 0.66% 中国 0.66% 图12:2017年4月-2018年3月遭移动勒索软件攻击用户遭任意移动恶意软件攻击用户比例最高10个国家/地区列表(每一个国家/地区都包含超过...例如,门罗币在几乎相同时间内价格多次攀升。 一年之后,情况保持不变,更为极端,每月攻击次数超过40万次,达60万次。 ?...赞比亚 18% 哈萨克斯坦 17% 坦桑尼亚 15% 吉尔吉斯斯坦 12% 图18:2017-2018年遭恶意矿工攻击用户遭任意恶意软件攻击用户比例最高国家/地区列表(每一个国家/地区都包含超过...我们可以看到,下面的列表或多或少具有相同部分: 国家 遭灰色软件攻击用户遭任意恶意软件攻击用户比例 埃塞俄比亚 57% 阿富汗 44% 土库曼斯坦 42% 塔吉克斯坦 42% 莫桑比克 35%...(每一个国家/地区都包含超过3万个卡巴斯基用户) 与灰色软件而不是恶意软件进行比较向我们展示了相同排名,具有更高比例

    90330

    pandas实战:用户消费行为画像

    5.复购率分析 复购率定义:在一个月内消费次数2次及以上用户所占比例。...首先通过透视表pivot_table统计每个用户各月消费次数,然后加工出复购标识,将每月消费次数2次以上记为1,一次记为0,没有消费记为NaN。...不活跃户:老客户,在时间窗口内未发生过消费客户 回流:上个月未消费本月消费过客户 为了给每个客户在各观察月打上客户分层标签,需要借助一些辅助列。...)) 8.高质量客户分析 按客户ID分组对订单金额求和,然后计算每个客户订单总和累计求和比例。...,处于左峰部分客户生命周期在0至100天内,虽然消费了2次没有能持性,因此在该部分客户首次消费30天后应该进行主动营销引导后续消费;处于右侧峰部分客户生命周期集中在400天以后,属于忠诚用户;而集中在

    30310

    PowerBI RFM 4.0 - 第一篇 - 滚动连续评估法-业务解释

    滚动 12 个月最大好处就是它会包括一个年内所有月份,而年通常是一种非常广泛周期,因此使用滚动 12 个月是很有意义。 来解读 RFM 4.0 重要部分: ?...左下图,表示不同 FM 分类用户比发展趋势,当然是希望 F↑M↑ 比越来越大,同时希望 F↓M↓ 比越来越小。而事实也的确如此。...右上图,表示最近一年个月对应滚动 12 个月客户相对于上个月滚动 12 个月留存率。这对估计用户粘性非常关键。...本案例表示,相对于一年内个月,按滚动12个月来看,都至少有 95% 以上用户是留存。 右下图,则更清楚表示不同 FM 分类用户所占比例趋势。...更复杂日期表 这类分析一般是在完成月阶段,而由于是滚动 12 个月,因此,我们需要确保日期表需要满足: 可以标识完成月。 可以标识有足够滚动 12 个月数据。

    1.2K22

    Python实战项目——用户消费行为数据分析(三)

    50用户人数占据大多数(在电商领域是非常正常现象) 用户累计消费金额比分析(用户贡献度) 进行用户分组,取出消费金额,进行求和,排序,重置索引 user_cumsum = df.groupby(...,并且趋于平稳状态 3月份过后,新用户量几乎没有大量增加 每月中回流用户比情况(所有用户比例) plt.figure(figsize=(12,6)) rate = purchase_states_ct.fillna...,活跃用户比比较大,维持在7%左右,而回流用户比例在上升,由于new用户还没有足够时间变成回流用户 4月份过后,不论是活跃用户,还是回流用户都呈现出下降趋势,但是回流用户依然高于活跃用户。...前三个月用户数据,所以分析是这些用户生命周期 绘制所有用户生命周期直方图+多次消费 plt.figure(figsize=(12,6)) plt.subplot(121) ((user_life...4.用户消费周期:有二次以上消费用户,平均68天,所以在50天到60天期间,应该对这批用户进行刺激召回,细致点,比如10天回复满意度,30天发放优惠券,55天时候提醒优惠券使用。

    1K11

    使用 HammerDB 对 Citus 和 Postgres 进行 Benchmark,每分钟200万新订单处理测试(官方博客)

    https://www.citusdata.com/blog/2022/03/12/how-to-benchmark-performance-of-citus-and-postgres-with-hammerdb...OLTP (在线事务处理)工作负载 数据库一个常见工作负载类别称为 OLTP(在线事务处理)。属于 OLTP 类别的工作负载会向数据库发送大量小型、短时间运行查询(或事务)。...示例:获取用户购物车中所有商品总价格。 创建此类工作负载应用程序类型通常具有许多并发用户,这些用户每秒总共执行许多请求。因此,对于 OLTP 工作负载,数据库能够同时处理大量此类查询非常重要。...一些需要问题示例: 去年最畅销 10 款产品是什么? 上个月有多少新客户加入? 回头客产生了多少收入? 几乎每个查询都使用聚合。...因此,如果所有数据都适合 RAM,那么对于基准测试结果非常重要。 硬件是否过于昂贵? 显然,每月花费 500 美元数据库性能预计会比每月花费 50,000 美元数据库差。

    1.7K10

    《DAX进阶指南》-第6章 动态可视化

    根据fSales表中数据,董事会定义了三个关键绩效指标(key performance indicators,KPIs):每月销售额、年初至今销售额和12个月滚动销售额。...使用DATEINPERIOD时,应特别考虑参考日期(上面公式中MAX(fSales[OrderDate]),此日期是DATESINPERIOD返回12个月期间最后一个日期。...从历史概况角度,参考日期是所选时间段最后一天或MAX('Date'[Date])。例如,2020年4月12个月滚动销售额是截至2020年4月30日12个月销售额。...由于其他日期列中值可能不同,因此我们需要调整12个月滚动总计DAX公式以使用正确日期列。 同样,我们需要一个辅助表来允许我们在日期列之间进行选择。...,所有选项都具有相似的结构。

    5.6K50

    PowerBI RFM 第4代 全网首发 超越传统

    用户选择群体后,可以点击查看到明细。 用户可以从明细钻取到所关注客户。 并发起激活动作。 这样,整个场景就形成了闭环。 为了让本文具有一定完整性,我们会整个再说明下 RFM 概念。...为了产生趋势化,我们可以使用滚动周期方法,例如:在分析任何一个立足月,实际分析时间区间是最近12个月。...那么,RFM R 就是 12 个月,而对于每个月份,都滚动分析前 12 个月,那么就实现了: 对于每个月,都是固定一段时间,如:包括本月在内12个月。...每个月都是滚动12个月,整体则形成了趋势。...表示实际 AC 黑色实线整体超过了一年前表示 PY 灰色实线,而每个月都是滚动12个月的话,那么可以看出,这个企业运营效果是持续走强

    1.2K30

    机器学习多场景实战

    月活(MAU):一个月活跃设备数 周活跃数(WAU):一周内活跃设备数 活跃度(DAU/MAU):体现用户总体粘度,衡量期间内每日活跃用户交叉重合情况 新增用户指标 主要是衡量营销推广渠道效果最基础指标...DNU比:新增用户活跃用户比例,可以用来衡量产品健康度 新用户比活跃用户过高,那说明该APP活跃是靠推广得来 留存指标 是验证APP对用户吸引力重要指标。...通常可以利用用户留存率与竞品进行对比,衡量APP对用户吸引力 次日留存率:某一统计时段新增用户在第二天再次启动应用比例 7日留存率:某一统计时段新增用户数在第7天再次启动该应用比例,14日和...Python指标计算案例 数据中包含了某电商网站从2009年12月到2011年12月两年间销售流水, 每条记录代表了一条交易记录, 包含如下字段 Invoice: 发票号码 StockCode: 商品编码...激活率计算 用户激活概念:用户激活不等同于用户注册了账号/登录了APP,不同类型产品用户激活定义各有差别 总体来说,用户激活是指用户一定时间内在产品中完成一定次数关键行为 # 统计每月激活用户数量

    8710

    一文搞定评分卡开发中——Y的确定(Vintage分析、滚动率分析等)

    假设有一个人在2021年4月12日上午10点8分在网络平台上借了一笔1万元信用贷款,以等额本息方式在未来12个月进行偿还。...依此类推, MOB12:指放款第13个月,例子中指2022年3月31日到2022年4月30日。 如果产品是12,那么该资产生命周期是12期,MOB最大到MOB12。...step4:根据转移矩阵中客户数统计比。 step5:选择不同观察点,重复step1~step4,对比滚动率数值。...三、账龄(Vintage)分析 1.目的:统计每个月新增放款后在每个MOB中逾期情况,对比每月放款逾期情况,判断策略、模型有效性,分析客户风险成熟期。...②纵轴体现了拥有相同账龄客户随时间改变而发生变化,展示了不同月份违约率变化情况。 ③由于产品期限为12期,所以MOB(账龄)最长为12个月,反之也成立。

    4K32

    机器学习在金融风控经验总结!

    当然反过来如果风控做得好,违约率稍微下降一些,大家就可以开心过个好年了:) 此外,风险具有滞后性,用户借款后至少要一个月才能知道是否会违约,甚至很多用户在还了半年甚至一年之后才违约。...表现期:定义好坏标签Y时间窗口,信贷风险具有天然滞后性,因为用户借款后一个月(第一期)才开始还钱,有得可能还了好几期才发生逾期。...观察期:构造特征相对时间窗口,例如用户申请订单前12个月平均消费金额。设定观察期是为了每个样本特征对齐,长度一般根据数据厚度决定。...滚动率分析:定义逾期天数 逾期超过多少天定义为“坏用户”是合理呢?对业务而言适当逾期有助于提高收入增长,一般可以通过“滚动率”来分析定义坏用户。...5、10、20) #Total:每一组用户总数 #Bad:每一组坏用户本数量 %Total_bad:每一组坏用户在所有坏用户比 Cum_%_Total_Bad、Cum_%_Total_Good:累积好坏用户

    2.7K21

    动手实战 | 用户行为数据分析

    '].astype('datetime64[M]') df.head() 按月分析数据 用户每月花费总金额 绘制曲线图展示 所有用户每月产品购买量 所有用户每月消费总次数 统计每月消费人数 #...用户每月花费总金额 # 分组 df.groupby(by = 'month')['order_amount'].sum() # 绘制曲线图展示 df.groupby(by = 'month')['order_amount...消费一次为新用户 消费多次为老用户 分析出每一个用户第一个消费和最后一次消费时间 agg(['func1','func2']):对分组结果进行指定聚合 分析出新老客户消费比例 # 如何判断新老用户...# 可以通过判断用户购买时间,第一次购买和最后一次购买时间一样则是新用户,否则是老用户 # 使用agg()对分组数据进行多种指定方式聚合 new_old_df = df.groupby(by...=1 else 0) 将用户按照每一个月份分成: unreg:观望用户(前两月没买,第三个月才第一次买,则用户前两个月为观望用户) unactive:首月购买后,后序月份没有购买则在没有购买月份中该用户为非活跃用户

    1.1K10

    关于产品生命周期几点思考

    尤其是在用户体量很大,数据分布具有严重“左偏”或者“右偏”时,只看平均值可能就不合适了。 去平均化,或者说是用户分组,便是应对这种情况一种处理方式。...在每一个月份新增用户群体,可以得到其在三个月/六个月/九个月之后留存比例趋势变化情况。...一些常规统计指标还是适用,比如每日付费人数,每日付费总额,人均付费金额,次均付费金额,以及不同产品下付费比等。...比如首月活跃天数,看似是一个简单指标,以此进行分组的话,不同组别在此后行为表现是迥异,界限清晰,是一个用户分组良好指标。...其中用户生命周期具有新增,留存,活跃,沉默等基本环节,并非每一个用户都会经历完整生命周期,基本环节之间是可以交叉穿越。 2.

    58510

    【BDTC 2015】数据库分论坛:GBase 8t、PosgreSQL-X2核心技术解析

    2015年12月10-12日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中国科学院计算技术研究所、北京中科天玑科技有限公司与CSDN共同协办,以“数据安全、深度分析、行业应用”为主题...目前存在性能低下、功耗增加等缺陷;二、NVM与DRAM混合,其涉及技术包括数据划分与分布技术、可靠性控制技术等,并且混合式介质融合是未来发展趋势。 ?...Postgres-X2是一款分布式关系数据库。即具有关系数据库特性,同时又具备可扩展、高可用特性,主要应用于海量数据实时在线交易处理系统。 ?...Postgres-X2架构核心组件分别是:用于全局事务控制GTM,在一个CLUSTER中只能有一台主GTM; 为降低GTM压力GTM_Proxy,用于对coordinator节点提交任务进行分组等操作...事务处理包括并发控制和数据库恢复两个问题。其中并发控制减少了事务串行执行代价过高弊端、引入了事务之间操作冲突。数据库恢复用于处理由于硬件、软件、网络等问题对数据库造成可逆伤害。

    1.3K60

    腾讯安全《游戏行业云上安全报告》发布:9成云上主机存在安全基线问题

    1.png 异常登录行为过半,22端口异常登录次数每月达千万次 59%游戏主机在近30天内曾经发生过异常登录其中异常登录次数最多端口为22,比超过70%,异常登录次数量级达每月千万次。...爆破攻击行为明显,默认用户名被爆破达每月数十亿次 2020年游戏厂商云主机在30天内遭遇爆破攻击比例达到69%,其中针对远程登录服务默认端口22和3389爆破攻击次数最多,而默认用户名被爆破次数比超过...漏洞风险依旧严重,未修复高危漏洞风险87% 高达54%游戏厂商在3天内发现存在漏洞风险,仅有25%游戏厂商一个月内未发现漏洞风险,漏洞风险类型主要为远程命令、代码执行两类往往为高风险等级漏洞。...数据表明,未及时修复漏洞风险中高危87%,中危12%。近年来组件漏洞披露越来越频繁,尤其挖矿团伙对服务器组件漏洞利用日益频繁,安全厂商针对漏洞攻击响应也日益增加。...安全基线能够有效提高黑客入侵门槛,安全管理人员时常忽略导致被黑客利用,需要严格按照安全规范进行配置。

    2.1K30

    年终盘点:2017年JavaScript框架发展现状

    在查看一个包下载数时,这个数字代表是这个包下载数npm注册中心所有包下载数比例。 完整注册表 npm注册表中所有软件包下载总和表明,npm生态系统正在经历爆炸式持续增长。...目前,npm大约有1000万用户,预计有75%JavaScript开发者都在使用npm。...但也是从这时开始走了下坡路,不过由于现有项目的生命周期,想要Backbone完全退出市场还有很长时间,现在它每月还可以获得75万次下载。...2017年前端框架增长情况 该图显示了2016年10月至2017年10月12个月期间框架绝对受欢迎程度及其增长情况。...这12个月总体情况如下: ·Preact很小,发展最快; ·Vue增速也快,但是上面还有Ember、Angular和Backbone三座大山; ·Ember在过去12个月里越来越受欢迎; ·Angular

    83850

    详解SaaS产品5类核心指标

    MRR用于衡量每月订阅收入,如果包含了一些年度订阅收入,先除以12,再分摊到每月来计算MRR。...例如,按年收费SaaS产品,年费1200元,那么: 合同金额是1200元; 客户一次性支付年费,收款金额是1200元; 在合同期间个月确认收入为1200÷12=100元。...如何计算ARPA 计算ARPA即客户(付费用户)产生每月经常性收入MRR除以当前月份账户或客户总数,公式如下。...通常,我们基于时间进行队列分组,例如: 2021年1月注册; 2021年2月注册; 2021年3月注册。 常见队列分析以表格形式呈现,具有以下几个特征,示例如图9所示。...每行代表一组用户,队列名称在第一列(例如2021年1月)。 每列代表队列创建后第几个月(第0个月是注册月份)。 每个单元格中值为相对于前一个月流失率或留存率。

    2.2K30

    ChatGPT一年豪夺1.8亿用户,微软Copilot图文生成超50亿,100+数据展示大模型用户全貌

    ChatGPT10大统计数据 截至2023年12月,ChatGPT 拥有约1.8亿用户。 ChatGPT平均每月产生17亿次网站浏览量。 ChatGPT 近 15% 用户(14.4%)来自美国。...ChatGPT用户达到100万用了5天,达到1亿用了2个月。 达到1亿用了2个月 在2024年1第二周,AIPRM用户平均每次在ChatGPT上花费近 4 小时(231 分钟)。...根据ChatGPT统计数据,该网站在2023年12访问量约为16亿人次,比前一个月减少了近1.32亿人次。...2022 年 11 月至 2023 年 12期间 ChatGPT 网站每月访客数明细表 从2022年11月上线第一个完整月(2022 年 11 月)开始,到 12 月这一数字达到了 2.66 亿,...ChatGPT用户比例最高国家 其次是印度, ChatGPT 用户近 7%(6.9%),比其他国家高出 3%。

    49810

    云计算托管将在2018年成为主流

    导语 采用共享托管,组织就可以得到其想要东西。如果每月支付金额是每月3美元,那么组织将获得一台拥有数百个网站服务器,并且具有在其网站上同时使用三个用户处理能力。...如果每月支付金额是每月3美元,那么组织将获得一台拥有数百个网站服务器,并且具有在其网站上同时使用三个用户处理能力。共享托管价格较低,这是它唯一优势。...•可能被12-36个月合约捆绑。 •功能强大服务器费用非常昂贵。 云计算在这些关键领域如何更好地托管?...•12个月合同 –组织每次支付一个月云计算托管费用。没有比这更灵活了。如果其用户群增长,只需添加更多服务器容量。如果组织增加其推广活动力度,只需升级其服务器,直到需求再度减少。...与其他云计算应用程序一样,云计算托管知名度也越来越高,为其在未来12个月采用铺平了道路。

    1.5K90
    领券