gpt4 book ai didi

mysql - 在 group by 期间,我需要采用一个未在 group by 中使用的变量,我也不想采用它的聚合函数(我想要它原样)

转载 作者:行者123 更新时间:2023-11-29 15:14:27 26 4
gpt4 key购买 nike

我有一个包含数百万条记录和 8 列的数据框。我想将其与 col1 和 col2 进行分组,并在选择中,我想要 name_id, max(SUM),col1,col2。

现在的问题是我没有在分组条件中使用 name_id ,也不是聚合函数。

您能否建议任何可以解决我在 SQL 或 Pyspark 中遇到的问题的方法。

在此处输入数据框 SUM = 有数据的列数,并且 name_id 是唯一的: Screenshot 1

所需输出:name_id(原样)、max(SUM)、Col1、Col2 Screenshot 2

我尝试过类似的方法,但它不起作用: Screenshot 3

欢迎任何建议!

我尝试了下面的代码,该代码在一种情况下运行良好,但在其他情况下则不然。

Tried Code

工作场景,当我在总和列中有重复的最大值时,它工作正常并重新调整 max name_id 这是我的要求 Working Scenario

当 SUM 列没有最大值重复时,它返回 null,在下表中,根据逻辑,我的输出应包含 name_id = 48981 和 name_id = 52214,但我得到唯一的 name_id = 52214。 Not Working Scenario

最佳答案

这是一个经典的每组最大问题。我建议使用以下解决方案来解决此问题:

select d.*
from data_frame d
join (
select col_1, col_2,
max(sum) max_sum,
max(name_id) max_name_id
from data_frame
group by col_1, col_2
) t on d.col_1 = t.col_1 and
d.col_2 = t.col_2 and
d.name_id = t.max_name_id and
d.sum = t.max_sum

关于mysql - 在 group by 期间,我需要采用一个未在 group by 中使用的变量,我也不想采用它的聚合函数(我想要它原样),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59818378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com