sql - 关于聚合的问题
问题描述
我需要找到总交货数量等于总销售数量的产品名称(iname)
给出的两个表是
sale:
snum:sqty:iname
1 :3 :Shoes
2 :1 :Shoes
3 :1 :Hat
delivery:
dnum:dqty:iname
1 :5 :Shoes
2 :1 :Hat
3 :3 :Shoes
我尝试了此代码,但我得到的结果汇总不正确,因为同一商品有多个销售和交付
select sale.iname
from sale
inner join delivery
on sale.iname = delivery.iname
group by sale.iname
having sum(delivery.dqty) - sum(sale.sqty) = 0
当我执行以下操作时,我能够找到正确的总量,但是有没有办法可以在一个代码中做到这一点?
select iname, sum(sqty)
from sale
group by iname
select iname, sum(dqty)
from delivery
group by iname
解决方案
你可以试试下面 -
select a.iname,saleQty,deliveryQty
from
(
select iname, sum(sqty) as saleQty
from sale
group by iname
)A inner join
(
select iname, sum(dqty) as deliveryQty
from delivery
group by iname
)B on A.iname=B.iname where saleQty-deliveryQty=0
推荐阅读
- html - 带边框折叠的css浮动
- python - 如何检查元素包含在哪个列表中
- mercurial - mercurial extensions:高效的模板关键字实现
- java - 如何使用 Nginx 作为反向代理在 gRPC Java 服务器端获取真实客户端 IP
- angular - 如何在 Canary 而不是默认的 Chrome 中打开 Angular CLI 项目?
- virtual-machine - 使用虚拟机的命令行设置虚拟机和主机操作系统
- python-3.x - Seaborn Heatmap:如何在绘图底部移动颜色条
- php - 此集合实例上不存在属性 [stats]
- python - 'Jupyter' 未被识别为内部或外部命令
- javascript - 每次存在换行符 (↵) 字符时展开数组