当前位置: 首页 > 面试题库 >

从两个表中获取几列的总和

张啸
2023-03-14
问题内容

我想从2个不同的表中获得几列的总和(这些表具有相同的结构)。

如果我只考虑一个表,我会写这种查询:

SELECT MONTH_REF, SUM(amount1), SUM(amount2)
    FROM T_FOO
    WHERE seller = XXX
    GROUP BY MONTH_REF;

但是,我也想使用表T_BAR中的数据,然后使用select查询返回以下列:

  • MONTH_REF
  • SUM(T_FOO.amount1)+ SUM(T_BAR.amount1)
  • SUM(T_FOO.amount2)+ SUM(T_BAR.amount2)

一切都按的值分组MONTH_REF

请注意,给定记录MONTH_REF可以在一个表中找到,但不能在另一表中找到。在这种情况下,我想获得T_FOO.amount1 + 0(或0 + T_BAR.amount1)的总和。

如何编写我的SQL查询以获取此信息?

有关信息,我的数据库是Oracle 10g。


问题答案:

您可以在分组依据之前合并表(顺便说一下,这在Oracle上):

SELECT t.month_ref, SUM(t.amount1), SUM(t.amount2)
  FROM (SELECT month_ref, amount1, amount2
          FROM T_FOO
         WHERE seller = XXX
         UNION ALL
        SELECT month_ref, amount1, amount2
          FROM T_BAR
         WHERE seller = XXX
         ) t
 GROUP BY t.month_ref

您还可以将表与卖方字段合并,并在以后进行过滤(以防您需要更高级的逻辑):

 SELECT t.month_ref, SUM(t.amount1), SUM(t.amount2)
   FROM (SELECT month_ref, amount1, amount2, seller
           FROM T_FOO
          UNION ALL
         SELECT month_ref, amount1, amount2, seller
           FROM T_BAR) t
  where t.seller = XXX
  GROUP BY t.month_ref


 类似资料:
  • 我有两个mysql表: 我想从表:loan中获取“loan\u amount”的和,从表:advance中获取“advance\u amount”的和,在一个由内部联接连接的mysql查询中。 如何从两个表的列中求和?

  • 问题内容: 如果我有两个清单 什么是获取熊猫数据框的最优雅的方式,如下所示: 注意,第一列是索引。 问题答案: 使用于:

  • 我正在尝试使用Java8流来组合列表。如何从两个现有列表中获得“对称差异列表”(只存在于一个列表中的所有对象)。我知道如何获取intersect列表,也知道如何获取union列表。 示例代码:

  • 问题内容: 我想在我的SQL查询中将结果返回为- 我有一个名为employee的表,其列名称,薪水,地址。该查询应返回employee表中的前两个最高列值。 这应该是单个查询。 问题答案: 如果最高的列是,请执行以下操作: 您将对其他任何列执行相同的操作,只需在和部分中替换列名称即可。

  • 问题内容: 我有两个清单,和。我需要的物品不在其中。 我只想得到[4,5]-l1中只有新值。 我可以不用迭代吗? 问题答案: 简短的回答,是的:,但这不会保持秩序。 长答案,不,因为在内部CPU总是会迭代。但如果你使用的是迭代将进行高度优化,并会快那么你的列表解析(更不用说检查会员是 多 快带套然后列出)。

  • 问题内容: 比较两个列表时,我需要获取不常见元素的列表。例如:- 在这里,我想要另一个列表中的readAllName列表(“ aaa”,“ ccc”,“ ddd”)中的不常见元素。不使用remove()和removeAll()。 问题答案: 假设期望的输出是(所有非常见项目),则可以使用,但是您需要使用两次,才能获得名称为name而不是name2的两个项目以及名称为name2而不是name2的项目