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

如何基于另一列最大值获取对应列值 同时统计唯一账户的对应总和

数据样例

实现方案

以下提供两种常用场景的可直接运行的实现逻辑:

1. SQL实现(支持Hive/Spark SQL/MySQL 8.0及以上带窗口函数的数据库)

WITH get_max_state AS (
    SELECT
        account,
        state AS max_state,
        ROW_NUMBER() OVER(PARTITION BY account ORDER BY count DESC) AS rn
    FROM 你的表名
),
calc_total AS (
    SELECT
        account,
        SUM(DISTINCT value) AS sum_value
    FROM 你的表名
    GROUP BY account
)
SELECT
    a.account,
    b.max_state,
    a.sum_value
FROM calc_total a
LEFT JOIN get_max_state b 
ON a.account = b.account AND b.rn = 1;

2. Python Pandas实现

import pandas as pd

# 替换为你的实际数据表,列名对应账号、state、count、待求和字段
df = pd.read_csv("你的数据文件路径.csv")

def group_process(group_df):
    # 取count最大的对应state
    max_state = group_df.loc[group_df["count"].idxmax(), "state"]
    # 对第三列去重后求和
    total = group_df["待求和字段名"].drop_duplicates().sum()
    return pd.Series([max_state, total], index=["max_state", "sum_value"])

result_df = df.groupby("account", as_index=False).apply(group_process)
  • 若同一个账号下有多个state的count同为最大值,SQL场景可将ROW_NUMBER()替换为RANK()取所有最大值,或新增排序规则取固定第一个;Pandas场景可在取idxmax前增加sort_values规则即可。
  • 若第三列不需要去重,直接删除SQL中的DISTINCT关键字、Pandas中的.drop_duplicates()方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:36:00