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

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/loss
  • ORDER 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:32:37