当前位置: 首页 > 知识库问答 >
问题:

在另一个表中查找具有不同总和的记录

公羊灿
2023-03-14

我有两张桌子:

TABLE1
| [Key1] | [Key2] | [Key3] | Value1 | Value2 |
+ ------ + ------ + ------ + ------ + ------ +
| 1      | 1      | 1      | 100    | 100    |
| 1      | 1      | 2      | 100    | 100    |
| 1      | 1      | 3      | 100    | 100    |

TABLE1_DETAILED
| [Key1] | [Key2] | [Key3] | [Key4] | Value1 | Value2 |
+ ------ + ------ + ------ + ------ + ------ | ------ +
| 1      | 1      | 1      | 1      | 10     | 10     |
| 1      | 1      | 1      | 2      | 90     | 90     |
| 1      | 1      | 2      | 1      | 10     | 10     |
| 1      | 1      | 2      | 2      | 80     | 90     |
| 1      | 1      | 3      | 1      | 90     | 110    |

我需要从表1中选择记录,其中Value1或Value2不同于表1\u中用相同的键1、键2和键3详细描述的值1和/或值2的总和。此外,我还需要表之间的值差,例如,上面我需要查询返回:

TABLE1_RESULT
| [Key1] | [Key2] | [Key3] | Value1 | Value2 |
+ ------ + ------ + ------ + ------ + ------ +
| 1      | 1      | 2      | 10     | 0      |
| 1      | 1      | 3      | 10     | -10    |

我尝试了很多方法来解决这个问题,但我错过了一些东西,我将非常感谢任何帮助。

共有1个答案

南门鸿雪
2023-03-14

这是SQL 101。

(SELECT Key1, Key2, Key3, SUM(Value1) AS Sum1, SUM(Value2) AS Sum2
FROM TABLE1_DETAILED
GROUP BY Key1, Key2, Key3) as TABLE1_SUMS

加入第一个表WHERE Sum1

 类似资料:
  • 问题内容: 我有以下两个表(在MySQL中): 如何找出哪些电话是由人,他们提出是不是在?所需的输出将是: 问题答案: 有几种不同的方法可以执行此操作,效率各不相同,具体取决于查询优化器的性能以及两个表的相对大小: 这是最简短的陈述,如果您的电话簿很短,则可能是最快的陈述: 或(感谢WOPR) (忽略这一点,正如其他人所说的那样,通常最好只选择所需的列,而不是’ ‘)

  • 问题内容: 我有以下两个SQL表(在MySQL中): 如何找出哪些电话是由人,他们提出是不是在?所需的输出将是: 任何帮助将非常感激。 问题答案: 有几种不同的方法可以执行此操作,效率各不相同,具体取决于查询优化器的性能以及两个表的相对大小: 这是最简短的陈述,如果您的电话簿很短,则可能是最快的陈述: 或者(由于Alterlife) 或(感谢WOPR) (如其他人所说,忽略它通常最好只选择想要的列

  • 我在数据库中有两个带有绑定主键的表,我希望在它们之间找到一个不相交的集。例如 有列()和示例数据: 那么,我如何创建一个SQL查询,以便我可以从中获取没有在中的带有ID的行。在这种情况下,应该返回吗? PS:ID是这两个表的主键。

  • 问题内容: 在Mysql中: 我表中的城市有重复的值: 座席城市: 该表中的数据格式为: 与…一样: 表国家: 我想知道每个国家有多少座城市。喜欢: 因此,我有2个查询: 但是此值应来自: 现在,如何获得所需的表? 问题答案: 带有: 结果:

  • 问题内容: 我正在尝试通过任务在《企业指南》中执行此操作,否则,我将仅使用数据步骤。 在数据步骤中,这将是: 问题答案: 这是一种方法。当然还有很多其他的。

  • 问题内容: table1 (id, name) table2 (id, name) 询问: 问题答案: SELECT t1.name FROM table1 t1 LEFT JOIN table2 t2 ON t2.name = t1.name WHERE t2.name IS NULL 问 :这是怎么回事? 答 :从概念上讲,我们从中选择所有行,并为每一行尝试在其中找到具有相同值的行。如果没有这