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

每月事务处理用户占滚动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

42210

大数据面试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语句,则计算整个分组内的聚合结果。

19810
  • 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万个卡巴斯基用户) 与灰色软件而不是恶意软件进行比较向我们展示了相同的排名,但具有更高的比例。

    92230

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

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

    1.2K22

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

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

    35910

    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天的时候提醒优惠券的使用。

    1.3K11

    使用 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.8K10

    《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.7K50

    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,不同类型产品的用户激活定义各有差别 总体来说,用户激活是指用户一定时间内在产品中完成一定次数的关键行为 # 统计每月激活用户数量

    8810

    一文搞定评分卡开发中——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个月,反之也成立。

    4.5K32

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

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

    2.7K21

    18个月以来a16z投资机构对AI消费者应用程序的洞见

    应用市场的投资态度,对于广大创业者和创业者具有重大的参考意义。...自ChatGPT推出以来,已经过去了9个月,以7个月的时间迅速成为用户数达到1亿的最快消费者应用,标志着生成式人工智能(GenAI)时代的开启。...ChatGPT 有领先优势 ChatGPT 占整个前 50 名名单每月流量的 60%,估计每月访问量为 16 亿次,每月用户数为 2 亿(截至 2023 年 6 月)。...根据a16z对150种产品的基准测试,那些不是AI的消费者订阅公司中,收入最低的25%的公司,其付费用户占总用户的比例高达70%。...许多AI产品具有多重功效:例如,在《自然》杂志发表的一项研究中,Replika聊天机器人帮助减少了3%的用户自杀念头。

    13010

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

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

    60410

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

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

    2.1K30

    【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

    详解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.4K30

    年终盘点: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

    83950

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

    ChatGPT的10大统计数据 截至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%。

    66910

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

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

    1.5K90
    领券