【问题标题】:Case Insensitive group by in PrestoPresto 中不区分大小写的分组依据
【发布时间】:2017-12-25 15:56:45
【问题描述】:

默认情况下,Presto 执行区分大小写的分组依据。但我想知道如何做不区分大小写的分组。一种方法是将列中的所有内容转换为小写,然后按即执行分组

select * from ( select lower(name_of_the_column)), other_columns from table)
where conditions..
group by name_of_the_column

我们可以减少时间的一种方法是将 select 语句中的条件放在括号内。有没有更好的方法?

【问题讨论】:

  • 您是否测量过使用子查询进行包装可以减少时间? AFAIK select lower(name_of_the_column), ... group by lower(name_of_the_column) 应该是一样的。
  • 是的。谢谢。
  • 我会把我的评论变成答案

标签: presto


【解决方案1】:

您不需要将lower(...) 推送到子查询中。如果你只是写:

SELECT lower(name_of_the_column), ...
FROM ...
GROUP BY lower(name_of_the_column) -- or just "GROUP BY 1"

Presto 将只对每行进行一次小写转换(不是两次)。

【讨论】:

    猜你喜欢
    • 2021-03-22
    • 1970-01-01
    • 2012-12-01
    • 2013-03-06
    • 2020-02-18
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多