基于另一表quantity求和结果,计算两表job_id对应quantity差值的SQL实现
需求实现:表一quantity减去表二聚合后的对应值
现有表数据
表一(假设表名为table_one)
| job_id | quantity |
|---|---|
| 2948 | 0 |
| 2947 | 3 |
| 2949 | 34 |
| 2950 | 4 |
表二(表名为test_table,位于arr_database库)
| job_id | quantity |
|---|---|
| 1 | 10 |
| 2949 | 10 |
| 2949 | 20 |
表二聚合结果
执行以下SQL后得到表二按job_id聚合的求和结果:
SELECT job_id, sum(quantity) FROM arr_database.test_table group by job_id;
| job_id | quantity |
|---|---|
| 1 | 10 |
| 2949 | 30 |
需求
将表一中对应job_id的quantity值减去表二聚合后的求和值,得到目标结果:
| job_id | quantity |
|---|---|
| 2948 | 0 |
| 2947 | 3 |
| 2949 | 4 |
| 2950 | 4 |
实现SQL语句
SELECT t1.job_id, t1.quantity - COALESCE(t2.sum_quantity, 0) AS quantity FROM table_one t1 LEFT JOIN (SELECT job_id, SUM(quantity) AS sum_quantity FROM arr_database.test_table GROUP BY job_id) t2 ON t1.job_id = t2.job_id;
说明
- 使用
LEFT JOIN确保保留表一的所有job_id记录 COALESCE函数处理表二中无对应job_id的情况,此时用0替代求和值,保证减法运算结果为表一原数值
内容的提问来源于stack exchange,提问作者Mithun Sarker
相关产品推荐
相关产品推荐

