【发布时间】:2020-01-20 07:05:32
【问题描述】:
我有一个包含数百万条记录和 8 列的数据框。 我想用 col1 和 col2 对其进行分组,在选择中,我想要 name_id, max(SUM),col1,col2。
现在的问题是我没有在按条件分组中使用 name_id,也不是聚合函数。
您能否建议任何可以解决我在 SQL 或 Pyspark 中的问题的方法。
在此处输入数据框 SUM = 有数据的列数并且 name_id 是唯一的:
必需的输出:name_id(原样),max(SUM),Col1,Col2
我尝试了类似的方法,但它不起作用:
欢迎提出任何建议!
我尝试了下面的代码,该代码在一种情况下运行良好,而在其他情况下运行良好。
工作场景,当我在 sum 列中有重复的最大值时,它工作正常并重新调整 max name_id 这是我的要求
当 SUM 列没有最大值重复时,它返回 null,根据逻辑,在下表中,我的输出应包含 name_id = 48981 和 name_id = 52214,但我得到的唯一 name_id = 52214。
【问题讨论】:
-
我有几个问题:1.为什么
banana, green不在结果中,2.你如何在预期结果中选择water melon,red行?换句话说,为什么行10005而不是行10003? -
是的,香蕉,绿色应该在答案中,我会更新我的问题,如果 SUM 列的值与西瓜的情况相同,我需要一个最大的 name_id。
-
添加文本比添加打印屏幕更好
-
关于第二个例子:我不明白你为什么在结果中需要 365042 以及为什么 126585 不在要求的结果中。
-
关于第三个例子:当前输出与查询不对应!