【问题标题】:display avg of the last column on the last row in SQL query在 SQL 查询的最后一行显示最后一列的平均值
【发布时间】:2020-11-06 18:25:59
【问题描述】:

您好,我无法弄清楚这个特定的问题。使用 oracle SQL 开发者。

试图弄清楚查询是如何显示的,就像下面的表格/图片一样。

此查询的最后一行 显示单词 AVERAGE:显示平均值(第六列中所有值的平均值)所有销售的最低售价的百分比。和所有剩余的列显示“--------”

Code      ProductName   Title    ShopID   SalePrice    %SoldAbove Min.SellPrice   
1         Martin        Robot       1        $49000                   15%
2      
3
4
---        ------        ----      ----     AVERAGE:             16.5%

下面是我正在寻找的输出的最后一行。但我不知道如何制作 其余列中的“--------”更不用说 AVERAGE: 和最后一行第六列中所有值的平均值。

总之,输出的最后一行应该显示百分比的平均值(在第六列中) 高于所有销售的最低售价。

【问题讨论】:

    标签: oracle oracle-sqldeveloper


    【解决方案1】:

    使用ROLLUP:

    SELECT DECODE( GROUPING( Code ), 1, '----', code ) AS code,
           DECODE( GROUPING( Code ), 1, '----', MAX(col1) ) AS Col1,
           DECODE( GROUPING( Code ), 1, '----', MAX(col2) ) AS Col2,
           DECODE( GROUPING( Code ), 1, 'Average:', MAX(col3) ) AS Col3,
           AVG( value )
    FROM   table_name
    GROUP BY ROLLUP(Code);
    

    其中,对于样本数据:

    CREATE TABLE table_name ( code, col1, col2, col3, value ) AS
    SELECT 1, 'AAA', 1, 'AA1', 15.0 FROM DUAL UNION ALL
    SELECT 2, 'BBB', 2, 'BB2', 17.5 FROM DUAL UNION ALL
    SELECT 3, 'CCC', 3, 'CC3', 20.0 FROM DUAL;
    

    输出:

    代码 | COL1 | COL2 | COL3 |平均(价值) :--- | :--- | :--- | :------- | ---------: 1 | AAA | 1 | AA1 | 15 2 |血脑屏障 | 2 | BB2 | 17.5 3 | CCC | 3 | CC3 | 20 ---- | ---- | ---- |平均:| 17.5

    db小提琴here

    【讨论】:

      【解决方案2】:

      这是 UNION ALL 的工作。获得这种结果的好方法:

      SELECT * FROM (
          SELECT COALESCE(whatever1, '------') whatever1
                 COALESCE(whatever2, '------') whatever2,
                 COALESCE(whatever3, '------') whatever3, 
                 whatever4
            FROM whatever
          UNION ALL
          SELECT NULL, NULL, NULL, AVG(whatever4) FROM whatever
      ) r 
      ORDER BY whatever1 NULLS LAST
      

      COALESCE 函数将您的 ----- 字符放入输出中。

      您也可以调查GROUP BY WITH ROLLUP。它可以做你想做的事。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-20
        • 1970-01-01
        • 2017-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多