MySQL中汇总行值并创建新列:计算指定股票的盈亏
嘿,你已经搞定了最麻烦的前期整理工作,剩下的汇总和列名替换其实很简单,我分两种常见场景给你具体方案:
场景1:已将买卖数据统一到nocolumnname列(买入为正、卖出为负)
如果你的数据表已经包含symbol(股票代码)和nocolumnname列,直接按股票分组求和就能得到盈亏,同时完成筛选、列名替换和排序:
SQL 实现
SELECT symbol, SUM(nocolumnname) AS `profit/loss` FROM your_trade_table -- 替换成你的实际表名 WHERE symbol IN ('AMZN', 'CMCSA', 'FOX') GROUP BY symbol ORDER BY symbol ASC;
WHERE子句精准筛选出你指定的三只股票SUM(nocolumnname)自动完成「总买入 - 总卖出」的计算(因为卖出值已经设为负数,求和等价于买入减卖出)AS直接把汇总后的列重命名为profit/lossORDER BY确保结果按字母顺序排列
Python Pandas 实现
如果是用Pandas处理数据框:
import pandas as pd # 假设你的数据存储在df中,包含symbol和nocolumnname列 target_stocks = ['AMZN', 'CMCSA', 'FOX'] # 链式操作一步到位:筛选→分组求和→重命名列→排序 result = ( df[df['symbol'].isin(target_stocks)] .groupby('symbol')['nocolumnname'] .sum() .reset_index() .rename(columns={'nocolumnname': 'profit/loss'}) .sort_values('symbol', ascending=True) .reset_index(drop=True) ) print(result)
场景2:已统计出各股票的buy_total(总买入)和sell_total(总卖出)
如果你的汇总表已经单独存了这两个统计值,直接计算差值即可:
SQL 实现
SELECT symbol, (buy_total - sell_total) AS `profit/loss` FROM your_summary_table -- 替换成你的汇总表名 WHERE symbol IN ('AMZN', 'CMCSA', 'FOX') ORDER BY symbol ASC;
Python Pandas 实现
result = ( df[df['symbol'].isin(target_stocks)] .assign(**{'profit/loss': lambda x: x['buy_total'] - x['sell_total']}) .sort_values('symbol', ascending=True) [['symbol', 'profit/loss']] .reset_index(drop=True) )
不管哪种方式,最终输出都会和你想要的Sample_Output结构一致:按字母顺序排列的三只股票,每只对应一行profit/loss的盈亏值。
内容的提问来源于stack exchange,提问作者Shikha Vishwakarma
相关产品推荐
相关产品推荐

