【问题标题】:Teradata MAX functionTeradata MAX 功能
【发布时间】:2018-09-17 20:22:57
【问题描述】:

如果我们使用下面的函数会返回哪一行?

 MAX (NAME)

我们在名称列中有以下两行

1 ABC
2 ABC

【问题讨论】:

    标签: teradata


    【解决方案1】:

    两者都不是。将返回一个与任一行无关的聚合,而是Max(Name) 值,这显然必须是ABC,因为它是唯一可用的值:

    CREATE VOLATILE TABLE test
    (
        f1 INTEGER,
        f2 CHAR(3)
    ) PRIMARY INDEX (f1) ON COMMIT PRESERVE ROWS;
    INSERT INTO test VALUES (1, 'ABC');
    INSERT INTO test VALUES (2, 'ABC');
    
    SELECT MAX(f2) FROM test;
    
    DROP TABLE test;
    

    只返回ABC

    你可以这样想。如果我在白板上写下数字2,让你大声说出哪个最大,你会说“2”;问“你选了哪个'两个'?”是愚蠢的。

    【讨论】:

    • @SantoshSuplepatil - 你为什么不自己试试看?你会发现它返回的和SELECT MAX(ID) FROM test;一样
    • 对。 Case 将首先运行生成包含 1 和 2 的中间结果集。然后 Max() 将命中并获取 2 并返回。
    【解决方案2】:

    由于两个值相同且只有两行,当您尝试查找最大值时,您将得到输出为“ABC”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-18
      • 2020-12-23
      • 2020-06-08
      • 2019-08-25
      • 1970-01-01
      • 2021-09-23
      • 2018-05-05
      • 2019-01-03
      相关资源
      最近更新 更多