【问题标题】:Finding maximum and minimum value from a field从字段中查找最大值和最小值
【发布时间】:2020-05-07 05:52:27
【问题描述】:

我有一个临时表 ttsales,其中包含一个整数类型的字段名称 t_sales,我想从 t_sales 中找出最大值和最小值,然后在按钮上单击将显示的最大值和最小值。我该怎么办?

【问题讨论】:

    标签: openedge progress-4gl


    【解决方案1】:

    一种可能性是按升序和降序对临时表进行排序。添加索引会有所帮助。如果您无法更改临时表及其大小,这可能不是最佳解决方案。

    DEFINE TEMP-TABLE ttsales NO-UNDO
        FIELD t_sales AS INTEGER
        INDEX sales t_sales.
    
    DEFINE VARIABLE iMin AS INTEGER     NO-UNDO.
    DEFINE VARIABLE iMax AS INTEGER     NO-UNDO.
    
    CREATE ttsales.
    ASSIGN ttsales.t_sales = 10.
    
    CREATE ttsales.
    ASSIGN ttsales.t_sales = 1.
    
    CREATE ttsales.
    ASSIGN ttsales.t_sales = 130.
    
    CREATE ttsales.
    ASSIGN ttsales.t_sales = 2.
    
    /* Get minimum value */
    FOR EACH ttsales BY ttsales.t_sales:
        iMin = ttsales.t_sales.
        LEAVE.
    END.
    
    /* Get maximum value */    
    FOR EACH ttsales BY ttsales.t_sales DESCENDING:
        iMax = ttsales.t_sales.
        LEAVE.
    END.
    
    DISPLAY iMin iMax.
    

    【讨论】:

      【解决方案2】:
      DEFINE QUERY qry FOR tsales.
      
      OPEN QUERY qry FOR EACH tsales BY t_sales.
      
      GET FIRST qry.
      
      MESSAGE tsales.t_sales.
      
      GET LAST qry.
      
      MESSAGE tsales.t_sales.
      

      根据表的大小,在字段上添加索引。

      【讨论】:

      • 我可以使用 break by 或 aggregate 函数吗?
      • @user13418366 在这种情况下,Break by 不会给你带来任何好处
      猜你喜欢
      • 2012-09-16
      • 2015-12-03
      • 1970-01-01
      • 2016-08-31
      • 2017-04-20
      • 1970-01-01
      • 2013-11-12
      • 2018-01-09
      • 2019-02-25
      相关资源
      最近更新 更多