SQL中如何为行单元格设置别名,生成自定义标签聚合表?
为输出表格行单元格设置自定义别名的实现方法
问题场景
原始输入表格:
| Basketball | Baseball | Golf | Cost |
|---|---|---|---|
| 1 | 0 | 0 | $50 |
| 0 | 1 | 0 | $75 |
| 1 | 0 | 1 | $150 |
| 0 | 1 | 1 | $225 |
期望输出表格:
| Sport | Cost |
|---|---|
| Basketball | 200 |
| Baseball | 300 |
| Golf | 375 |
已完成各运动成本总和的计算,但需要为输出表的Sport列行单元格设置对应运动名称的自定义别名。
不同工具的实现方式
1. SQL 实现
通过UNION ALL构造每行数据,直接指定运动名称作为行单元格的别名:
SELECT 'Basketball' AS Sport, SUM(CASE WHEN Basketball = 1 THEN Cost ELSE 0 END) AS Cost FROM your_table UNION ALL SELECT 'Baseball' AS Sport, SUM(CASE WHEN Baseball = 1 THEN Cost ELSE 0 END) AS Cost FROM your_table UNION ALL SELECT 'Golf' AS Sport, SUM(CASE WHEN Golf = 1 THEN Cost ELSE 0 END) AS Cost FROM your_table;
这里的'Basketball'等字符串就是直接设置的行单元格别名,和列别名的设置逻辑一致,只是将固定值作为列的内容返回。
2. Excel/Google Sheets 实现
- 第一步:在空白区域的
Sport列手动填入自定义别名(Basketball、Baseball、Golf); - 第二步:用
SUMIFS函数计算对应总成本:- Basketball行成本公式:
=SUMIFS(D:D,A:A,1)(假设原始表格Cost列在D列,Basketball列在A列) - Baseball行成本公式:
=SUMIFS(D:D,B:B,1) - Golf行成本公式:
=SUMIFS(D:D,C:C,1)
- Basketball行成本公式:
3. Python(Pandas)实现
提取运动列名,循环计算总成本后构造新表,将运动名称直接作为行单元格别名:
import pandas as pd # 加载原始数据 df = pd.DataFrame({ 'Basketball': [1, 0, 1, 0], 'Baseball': [0, 1, 0, 1], 'Golf': [0, 0, 1, 1], 'Cost': [50, 75, 150, 225] }) # 构造输出数据 sport_list = ['Basketball', 'Baseball', 'Golf'] output_data = [] for sport in sport_list: total = df[df[sport] == 1]['Cost'].sum() output_data.append({'Sport': sport, 'Cost': total}) output_df = pd.DataFrame(output_data) print(output_df)
内容的提问来源于stack exchange,提问作者brockey2sockey
相关产品推荐
相关产品推荐

