【问题标题】:Testing the max() functions in SQL (Teradata) without having to query a database在 SQL (Teradata) 中测试 max() 函数,而无需查询数据库
【发布时间】:2021-10-14 09:10:42
【问题描述】:

这可能是一个简单的,但我无法在任何地方找到它。我只想使用字符串列表检查 Teradata SQL 查询中的 MAX() 函数将返回什么。我有一个正在使用的 Teradata 数据库,但我没有要查询的表(我需要知道 MAX() 的输出才能填充表数据)。我正在使用 Aqua Data Studio。

我试过了

select max('test1','untest2','_test3')

我也试过了

select max(field_name) where field_name in ('test1','untest2','_test3')

但两者都抛出错误。

我错过了什么?

【问题讨论】:

  • 我不知道 Teradata,但 max() 是一个聚合函数,并没有像您认为的那样做 - 聚合函数与 一组行一起工作>
  • select GREATEST('test1','untest2','_test3') 适用于多个而不是多个

标签: sql max teradata


【解决方案1】:

不应该是 GREATEST 函数吗?

select greatest('test1','untest2','_test3')

【讨论】:

  • 谢谢!行上的 max() 的行为方式是否与 best() 相同?我最终不得不把它带到行聚合中。
  • 不客气。 MAX 返回单个列中的最大值(通过许多行)。如果这就是您正在寻找的东西,那么是的 - 它可以完成这项工作。否则,这是最棒的。选择最适合您的功能。
  • 警告:字符串上的 MAX 和 GREATEST 都取决于排序规则和特定于大小写的设置。
【解决方案2】:

这对你有用吗?

select max(field_name)
from
(
    select 'test1' as field_name union
    select 'untest2' as field_name union
    select '_test3' as field_name
) tbl

【讨论】:

  • 引发错误。也许这是 Teradata 的事情。
  • Teradata 需要联合中的 from 子句。
【解决方案3】:

尝试通过 VALUES 或 UNNEST(array) 提供数据

SELECT max(x) FROM (
  VALUES ('test1'),('untest2'),('_test3')
) AS x(x)

SELECT max(x) FROM 
  UNNEST(ARRAY['test1','untest2','_test3']) AS x

【讨论】:

  • Teradata 不支持 VALUES 语法,ARRAY 需要用户定义类型声明。
猜你喜欢
  • 2021-07-02
  • 2012-11-15
  • 2017-11-01
  • 1970-01-01
  • 2018-10-06
  • 2017-07-29
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
相关资源
最近更新 更多