我在文件中的其他列中有一个名为priority的列,它包含例如1、2、3、4、5、6等的数字
Department Strength Priority
--------------------------------
CS Good 10
CS Low 2
EC Good 10
EC Low 2
EC Nil 3
我想通过使用sql配置单元上下文的查询来选择优先级为2的记录,如下所示
select * from
(
select testfile.*,row_number() over(partition by Department order by Priority asc) rn
from testfile
)ranked
where rn=1;
在spark代码中,所有列都被定义为string。我希望代码选择优先级为2的记录,因为我已经给出了 asc
在 order by
条款。但是有没有可能仅仅因为我没有将priority列声明为int,查询就选择了priority而不是2呢
CS Good 10
EC Good 10
但是如果我声明priority列为 int
,记录将正确显示如下
CS Low 2
EC Low 2
我想了解这一点。有几个例子,我声明数字列为字符串,但得到正确的顺序。
1条答案
按热度按时间mwngjboj1#
这个
order by
使用的是字典顺序,类似于字母顺序,但字母顺序实际上是一种字典顺序。这意味着以下字符串的顺序如下
在一个简单的方式,你可以说它是按每个字符的位置排序,但你可以从这里和这里阅读更多的回应
此外,您可以选择将列强制转换为整数,以实现例如的数字排序。