首页 > 解决方案 > SQL - 来自两个表的数据

问题描述

我想从两个不同的表中选择一些数据并总结一些值

我有两张桌子:

材质

materialID    MaterialName   Maxvalue  
1234            matA          30
4321            matB          20

餐桌数量

materialID    quantity
1234           20
1234           1
1234           10
4321           5
4321           6

material表和之间有匹配Quantity- 这个匹配是materialID.

我想要的是选择SUM数量超过MAX价值的材料数量 - 在这种情况下,结果应该是:

materialname  sum
matA          31

我使用了一些内部join, group by,sum函数等,但没有成功。

标签: sql

解决方案


您可以连接和分组两个表,然后使用 having 子句过滤结果:

select m.materialname, sum(q.quantity) as quantity
from material m 
  join quantity q on m.materialid = q.materialid
group by m.materialname
having sum(q.quantity) >= max(m.maxvalue);

中的 max() >= max(m.maxvalue)是必要的,因为它是未分组的列(您不能使用having sum(q.quantity) >= m.maxvalue)。但是使用 max() 不会改变任何东西,因为对于相同的材质名称,所有值都是相同的。

在线示例:https ://rextester.com/KNL78530


推荐阅读