如何从 SparkSQL 中的列值中获取 MAX

问题描述 投票:0回答:2

我有一个用例,我需要从 SparkSQL 中的表的不同列中获取最大值。

下面是一个示例表 -

我想在不使用 union 子句的情况下获取 a、b 和 c 列中的最大值。

下面是我执行的 SL 查询 -

SELECT (
SELECT MAX(myval) 
  FROM (VALUES (a),(b),(c)) AS temp(myval)
) AS MaxOfColumns
FROM
table

但这会引发错误 - “无法在内联表定义中计算表达式outer();第 3 行 pos 16”

你能帮我解决这个问题吗?

sql apache-spark-sql
2个回答
0
投票

数组最大

with t(id,a,b,c) as (select stack(2 ,100,1,2,3 ,200,5,6,4))
select *, array_max(array(a,b,c)) as MaxOfColumns
from   t
id a b c 最大列数
100 1 2 3 3
200 5 6 4 6

0
投票

使用最伟大的 Spark sql 函数:

从表中选择 GREATEST(col1、col2 等...)

https://spark.apache.org/docs/3.1.3/api/python/reference/api/pyspark.sql.functions.greatest.html

© www.soinside.com 2019 - 2024. All rights reserved.