min_by:按最小值关联取值
速查结论
min_by(x, y) 是 Spark SQL 中用于返回与 y 的最小值相关联的 x 值的函数。
语法
min_by(x, y)
参数说明
| 参数 | 说明 |
|---|---|
| x | 要返回的值所在的列或表达式 |
| y | 用于确定最小值的列或表达式。函数会找到 y 的最小值,然后返回对应的 x 值 |
示例
> SELECT min_by(x, y) FROM VALUES ('a', 10), ('b', 50), ('c', 20) AS tab(x, y);
a
常见报错与避坑指南
- 并列最小值:当 y 的最小值对应多行时,
min_by()返回其中某一行的 x 值,但结果是非确定性的(可能受数据分布和 shuffle 影响)。 - NULL 值处理:
min_by()会忽略 y 为 NULL 的行。如果所有行的 y 都是 NULL,则返回 NULL。 - 与窗口函数对比:
min_by()是聚合函数,作用于整个分组。如果需要保留每行并找到关联值,请使用窗口函数结合FIRST_VALUE。
Since: 3.0.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
