mysql - 在 group by 期间,我需要采用一个未在 group by 中使用的变量,我也不想采用它的聚合函数(我想要它原样)
问题描述
我有一个包含数百万条记录和 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。
解决方案
这是一个经典的最大每组问题。我建议使用以下解决方案来解决此问题:
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
推荐阅读
- python - 从相似字符串列表中获取后缀
- arduino - 如何在 API 模式下读取 XBee RSSI?
- c# - 仪表板上的 ActiveMQ 检查重试
- c - ++*p 和 *p ++ 之间的区别
- angular - 从 Angular 库中监视 jasmine 函数不起作用
- google-sheets - 从一个单元格(Google 表格)创建 3 个输出结果(行)?
- java - 如何将主函数中的变量同步到新线程?
- python - Django从所有对象中获取函数结果的总和
- python - 如何将 python docker 映像部署到 AWS Lambda?
- android - 使用 Cloud Function 创建文档时发送通知