You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求SQL语句:统计2022年客户月度交易频次分布

获取2022年客户月度交易频次分布的解决方案

以下提供SQL和Python(Pandas)两种常用实现方式,适合数据分析新手操作:

SQL实现

1. 先统计每个客户2022年各月的交易次数

用CTE临时表存储中间结果:

WITH customer_monthly_trans AS (
    SELECT
        customer_id,
        DATE_FORMAT(transaction_date, '%Y-%m') AS transaction_month,
        COUNT(transaction_id) AS monthly_trans_count
    FROM
        transactions
    WHERE
        YEAR(transaction_date) = 2022
    GROUP BY
        customer_id, transaction_month
)

2. 统计各交易频次对应的客户数量(即分布情况)

基于临时表分组统计:

SELECT
    monthly_trans_count,
    COUNT(DISTINCT customer_id) AS customer_num
FROM
    customer_monthly_trans
GROUP BY
    monthly_trans_count
ORDER BY
    monthly_trans_count;

注:不同数据库的日期函数可能有差异,比如PostgreSQL用TO_CHAR(transaction_date, 'YYYY-MM'),MySQL用上述DATE_FORMAT,需根据你的数据库类型调整。

Python(Pandas)实现

1. 导入并预处理数据

import pandas as pd

# 读取交易数据(根据实际数据源调整,比如从数据库读取、Excel等)
df = pd.read_csv('transactions.csv')

# 转换交易日期为datetime类型
df['transaction_date'] = pd.to_datetime(df['transaction_date'])

# 筛选2022年的交易记录
df_2022 = df[df['transaction_date'].dt.year == 2022]

2. 计算每个客户各月的交易次数

# 按客户和月份分组,统计交易次数
df_monthly = df_2022.groupby(
    ['customer_id', df_2022['transaction_date'].dt.to_period('M')]
)['transaction_id'].count().reset_index(name='monthly_trans_count')

3. 生成交易频次分布

# 按交易频次分组,统计对应客户数
freq_dist = df_monthly.groupby('monthly_trans_count')['customer_id'].nunique().reset_index(name='customer_num')

# 按频次排序,便于查看
freq_dist = freq_dist.sort_values('monthly_trans_count')

# 输出结果
print(freq_dist)

内容的提问来源于stack exchange,提问作者Bommu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:15:44