例如,我有一个数据集:
名称版本First1.2.1第一个1.2.2第二个1.2.0第二个1.2.2第三个1.3.1第三个1.3.2第五个1.0.1第四个1.2.2第四个2.2第四个1.2.2
我需要返回具有最高版本的唯一名称。我最初使用 MAX(Version)
这给了我不正确的版本,因为它似乎是一个字符串。
所以我用了 MAX(CAST('Version') AS DECIMAL)
as version`也尝试使用float,这使我返回null值作为版本。
有没有什么我可以用来把我带回最高版本,只有这样数据集会像:
名称版本first1.2.2第二个1.2.2第三个1.3.2第四个1.2.2第四个2.2.2
编辑:
我将展示一个与sql不同的更准确的示例,因为仅使用max并不能为我带来最高版本。
SELECT Name, Version from table where Name IN ("First")
GROUP BY Name
名称版本First1.3.0第一个1.8.0第一个1.11.0第一个1.9.2第五个1.12.0第五个1.7.2
如果我这样做了:
SELECT Name, MAX(Version) from table where Name IN ("First")
GROUP BY Name
这将返回:
名称版本1.9.2
2条答案
按热度按时间ef1yzkbh1#
在sparksql上,您可以使用
transform
得到一个整数数组,比如[1, 12, 0]
为了1.12.0
,则可以获取每个名称的最大数组,并使用.
获取原始版本号。qacovj5a2#
你可以利用
HierarchyId
请回答您的问题。此解决方案应适用于SQLServer2008