【问题标题】:How do I multiply and sum all values in two SQL tables如何将两个 SQL 表中的所有值相乘和求和
【发布时间】:2015-09-30 19:14:31
【问题描述】:

假设我们有两张桌子。

1   0.73
2   0.13
3   0.14

1   1
2   1.465
3   1.181

我想以某种方式循环它们以执行

(0.73*1) + (0.13*1.465) + (0.14 * 1.181) = 1.08579

或者是否有任何 SQL 查询可以对此有所帮助?

更新:这是一个示例查询。没有语法错误,但似乎没有返回任何内容。

SELECT 
    sum(`racemean`.male * `racehazard`.male) 
FROM 
    `racemean` 
JOIN 
    `racehazard` ON `racemean`.male = `racehazard`.male

我不确定显示示例数据的格式,但这是从 phpMyAdmin 导出的。

http://sqlfiddle.com/#!2/b3ac2

【问题讨论】:

  • 为什么你乘以男*男,然后再次加入男表? ID 的专栏在哪里?
  • -> ... JOIN racehazard ON racemean.race = racehazard.race

标签: mysql sql database sum


【解决方案1】:

如果表通过可用于join 的列连接,则下面的查询应该可以工作。

select sum(t1.col2 * t2.col2)
from t1 join t2 on t1.col1 = t2.col1

Fiddle with sample data

Fiddle with the data from question

【讨论】:

  • 如果列的行数不同会怎样?没关系,我收回这个问题。它永远不会不同
  • 所有这些都将成倍增加。
  • 请注意,如果它们不同,则此处执行的 INNER JOIN 语句将忽略任一表中的不匹配记录。因此,如果表 a 有记录 1,3 而表 b 有 1,2 你只会得到 (0.73*1) 因为其他记录不会被考虑。
  • 是的@xQbert ..我觉得操作员在问一个特定的id是否有2个值?因此评论,所有相应的值都会相乘
  • @vkp 抱歉,我措辞不佳。我的意思是,如果每个表有不同数量的行怎么办。另外,如果您可以看一下,我用示例查询更新了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 2020-07-26
  • 2015-08-20
相关资源
最近更新 更多