sql - 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
函数等,但没有成功。
解决方案
您可以连接和分组两个表,然后使用 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() 不会改变任何东西,因为对于相同的材质名称,所有值都是相同的。
推荐阅读
- c# - 用于创建动态 VSTO Excel 函数的 C# JSON 字符串值
- algorithm - 每个人到达目的地的最短时间
- python-3.x - 在 Python 中分析导入
- powerbi - 我可以根据网格可视化中的选择来驱动子重新查询(而不是过滤器)吗?
- javascript - 如何在javascript中使用正则表达式删除特定字母
- python - Tkinter:同时滚动的文本框最终会失去对齐
- c - 浮动总是四舍五入吗?
- typescript - 我们如何根据外部函数的参数使内部函数的参数成为可选的?
- python - 如何在 matplotlib.pyplot.arrow 旁边放置一个文本标签?
- sql - 连接数据集的 SQL 计算