【问题标题】:Calculate an average with 2 rows of 2 different tables计算 2 行 2 个不同表的平均值
【发布时间】:2021-08-09 19:45:47
【问题描述】:

我对 MySQL 还很陌生,目前我正在努力解决一个问题。

我有 2 个表格(技术日志和销售)。我现在打算做的是,从 techlog 中的列中获取总和,与 sales 相同。这两个总和需要计算新的 Sum(sales.row)/Sum(techlog.row)。这样做的想法是我可以获得每分钟的价格。 有这样的可能吗?

两个表共享具有相同 ID 的列。此外,两张表上还提供了一些列,例如 Immatriculation。

到目前为止我已经尝试过:

use dbm_project;

SELECT techlog.Immatriculation, sum(techlog.TimeTOT), sum(sales.total)
FROM techlog
INNER JOIN sales
ON techlog.Immatriculation = sales.Immatriculation
GROUP BY techlog.Immatriculation

我提前道歉,因为我发现我的问题是缺少经验。

长话短说:我想计算两个不同表的两个值,并用这些值计算新的值。

【问题讨论】:

    标签: mysql group-by subquery aggregate-functions


    【解决方案1】:

    这是子查询的工作。

    一个是

             SELECT Immatriculation, sum(TimeTOT) TimeTot
               FROM techlog
              GROUP BY Immatriculation
    

    另一个是

             SELECT Immatriculation, sum(total) SalesTot
               FROM sales
              GROUP BY Immatriculation
    

    然后你把他们联合起来

    SELECT t.Immatriculation, t.TimeTot, s.SalesTot
      FROM (
                 SELECT Immatriculation, sum(TimeTOT) TimeTot
                   FROM techlog
                  GROUP BY Immatriculation
           ) t
      LEFT JOIN (
                 SELECT Immatriculation, sum(total) SalesTot
                   FROM sales
                  GROUP BY Immatriculation
           ) s ON t.Immatriculation = s.Immatriculation;
    

    这是因为 ....

    1. 子查询可以代替表。这就是 S结构化Query L语言中的S
    2. 两个子查询中的每一个都有每个Immatriculation 值的一行。因此,您会在结果集中为每一个获得一行。

    【讨论】:

    • 非常感谢。这对我帮助很大,我想我明白了你的想法。非常感谢您的快速解决方案建议。
    猜你喜欢
    • 2021-04-09
    • 2022-12-02
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多