sql - 优化 HiveQL 中的多个连接
问题描述
我有 3 张桌子,食物、发票和分公司。
Food
| foodID | productCode | foodName | foodQty |
| -------- | -------------- | --------- | -------- |
| 1 | 000001 | Mozerella | 50 |
| 2 | 000002 | Tomato | 40 |
| 3 | 000003 | flour | 60 |
Invoice
| id | foodID | branchID | qtySold |
| ------ | ------- | -------- | -------- |
| 1 | 1 | 2 | 3.5 |
| 2 | 3 | 2 | 1.5 |
| 3 | 3 | 5 | 2 |
| 4 | 2 | 5 | 5.5 |
Branch
| branchID | branchName |
| -------- | ---------- |
| 1 | branch1 |
| 2 | branch2 |
| 3 | branch3 |
我需要编写一个 HiveQL 语句来获得以下输出
| productCode | productName | branchName | total quantity sold |
| ----------- | ----------- | ---------- | ------------------- |
这是我的 HiveQL 语句
Select f.productCode as productCode, f.productName as productName, b.branchName as branchName,
SUM(i.qtySold) as qtySold
FROM Invoice i JOIN Food f ON (i.foodID = f.foodID)
JOIN Branch b ON (i.branchID = b.branchID)
是否有其他加入方式可以最大限度地提高查询速度?
解决方案
推荐阅读
- java - 春天有没有常见的NoSQLTemplate
- laravel - 如何在 laravel 中一次处理表格而不处理一行?
- angular - 如何在 Angular/Typescript 中延迟函数的执行
- apache-spark - 当相应的列标志为零时,PySpark 填充空值
- javascript - Acrobat Reader DC 使用 javascript 自动打印任何打开的文件
- laravel - 如何在不使用任何包的情况下在 laravel 中集成 razorpay 支付网关?
- javascript - 如何编辑选定的 html 列?
- html - 在我的站点中,自动换行符不适用于 mathjax,但在任何在线 mathjax 现场演示中测试的相同方程都可以正常工作
- javascript - 检查字符串是否包含链接 javascript
- windows - 缺少从 zip 安装的 Perl 模块