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

如何在BigQuery中使用标准SQL或Legacy SQL基于两个字段创建交叉表

生成客户-产品类别购买数量交叉表的解决方案

我来帮你搞定这个交叉表统计需求,下面是几种不同工具的实现方案,你可以根据自己的使用场景选择:

1. Python Pandas 实现

这是处理数据分析场景的高效方式,代码简洁且能灵活调整格式:

import pandas as pd

# 构建你的示例数据集
data = {
    'Customer_ID': ['MEM014', 'KAR810', 'NIKE61', 'NIKE61', 'STT019', 'STT019', 'STT019'],
    'Style': ['BLS87', 'DR126', 'MMQ5', 'MMQ5', 'BLS83', 'BLS84', 'BLS87']
}
df = pd.DataFrame(data)

# 生成交叉表:行是客户ID,列是产品类别,值为购买数量
cross_table = pd.crosstab(df['Customer_ID'], df['Style']).reset_index()
# 移除多余的轴标签,让结果更贴近你的期望格式
cross_table = cross_table.rename_axis(None, axis=1)

print(cross_table)

运行后输出的结果会和你期望的完全一致:

Customer_ID  BLS83  BLS84  BLS87  DR126  MMQ5
0      MEM014      0      0      1      0     0
1      KAR810      0      0      0      1     0
2      NIKE61      0      0      0      0     2
3      STT019      1      1      1      0     0

2. Excel 数据透视表实现

如果你习惯用Excel处理数据,用数据透视表可以可视化完成:

  • 选中包含表头的所有数据区域
  • 点击「插入」选项卡中的数据透视表,选择透视表的放置位置
  • 在右侧字段列表中:
    • 将「Customer_ID」拖到行区域
    • 将「Style」拖到列区域
    • 将「Style」拖到值区域,然后右键点击值区域的字段→值字段设置,选择「计数」
  • (可选)如果透视表中显示空白,可通过「查找和替换」将空白替换为0,或者在值字段设置中调整格式

3. SQL 实现(以MySQL为例)

如果数据存储在数据库中,可以用条件聚合直接查询出结果:

SELECT
    Customer_ID,
    COUNT(CASE WHEN Style = 'DR126' THEN 1 END) AS DR126,
    COUNT(CASE WHEN Style = 'MMQ5' THEN 1 END) AS MMQ5,
    COUNT(CASE WHEN Style = 'BLS83' THEN 1 END) AS BLS83,
    COUNT(CASE WHEN Style = 'BLS84' THEN 1 END) AS BLS84,
    COUNT(CASE WHEN Style = 'BLS87' THEN 1 END) AS BLS87
FROM your_table_name
GROUP BY Customer_ID
ORDER BY Customer_ID;

如果你的产品类别(Style)有很多动态值,这种硬编码的方式不够灵活,可以考虑用数据库的动态SQL来自动生成列,但对于固定类别,这个方案直接高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:19:33