【问题标题】:How to add a union all result in a new column如何添加一个联合全部导致一个新列
【发布时间】:2021-11-02 08:54:26
【问题描述】:

我想查询每个设备的总数:数量 * 成本。

现在我想做一个 MySQL 查询,在其中创建一个临时列,该列执行以下操作:

Total - Total of Totals
80    -  80
90    -  170
100   -  270

现在我有这样的代码:

Select total
from equipment
UNION ALL
select sum(total) from equipment;

在总计下方给出总计。 我想把它分开并在它旁边按顺序做。

【问题讨论】:

  • 请添加一些关于您对单词sequential 的含义的信息。 (示例输入和示例输出。您可以使用edit 将此信息添加到您的问题中)
  • 请提供样本数据和期望的结果。

标签: mysql sql syntax mysql-workbench


【解决方案1】:

在 Mysql 8 中,您可以为此使用窗口函数

WITH CTE AS (
SELECT
   quantity * costs as total as total
FROM 
equipment)
    select
      total,
      sum(total) over (order by total) as cumulative_sum
    from CTE;

【讨论】:

    【解决方案2】:

    你似乎想要一个窗口函数,像这样:

    select (quantity * costs) as total,
           sum(quantity * costs) over (order by quantity * costs) as running_total
    from equipment;
    

    我实际上希望您现有的总数是聚合的结果。您的问题不清楚是什么,但您可以将窗口函数与聚合函数一起使用:

    select sum(quantity * costs) as total,
           sum(quantity * costs) over (order by sum(quantity * costs)) as running_total
    from equipment
    group by <something>
    

    【讨论】:

      【解决方案3】:

      使用GROUP BYROLLUP

      SELECT id, SUM(quantity * costs) AS total
      FROM equipment
      GROUP BY id WITH ROLLUP;
      

      在结果集的底部会出现一条记录,NULLid,其总数将超过所有组。

      【讨论】:

      • 谢谢,但数量 * 成本并没有像每行一样总结:/ 但最后一个值是总数。我希望它像 id 一样连续 - 总计 1 - 100 2 - 2000 3 - 2100 总计 - 123454566
      猜你喜欢
      • 2022-06-30
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      相关资源
      最近更新 更多