【问题标题】:Using SUM() in oracle DB with reference from another table在 oracle DB 中使用 SUM() 并参考另一个表
【发布时间】:2014-11-06 06:31:05
【问题描述】:

我需要帮助以从另一个表中查询总和结果 所以我有两张表,MASTER_DRAWING_ASSIGNED 和 FABRICATION

MASTER_DRAWING_ASSIGNED,

HEAD_MARK SUBCONT_ID PROJECT_NAME
---------------------------------
HEADMARKA BOBBY      PROCESSHOUSE
HEADMARKB BOBBY      PROCESSHOUSE
HEADMARKC ERIC       PROCESSHOUSE

制造

HEAD_MARK CURRENT_WEIGHT PROJECT_NAME
-------------------------------------
HEADMARKA 19.5           PROCESSHOUSE
HEADMARKA 23.4           PROCESSHOUSE
HEADMARKA 11.2           PROCESSHOUSE
HEADMARKB 23.3           PROCESSHOUSE
HEADMARKB 10.9           PROCESSHOUSE
HEADMARKC 11.0           PROCESSHOUSE
HEADMARKC 10.5           PROCESSHOUSE

所以有一天,我想知道 BOBBY 从 FABRICATION 中的当前重量中提取的总重量能得到多少。我觉得这样做有些困难。请帮帮我

我的查询是这样的

SELECT SUM(CURRENT_WEIGHT)
       , MASTER_DRAWING_ASSIGNED.SUBCONT_ID 
FROM FABRICATION
     , MASTER_DRAWING_ASSIGNED 
WHERE MASTER_DRAWING_ASSIGNED.HEAD_MARK = FABRICATION.HEAD_MARK
MASTER_DRAWING_ASSIGNED.PROJECT_NAME = 'PROCESSHOUSE' 
AND MASTER_DRAWING_ASSIGNED.SUBCONT_ID = 'BOBBY'

【问题讨论】:

  • 为了将来参考,阅读 Oracle 文档及其示例将使“困难”摆脱“困难”。 Find out more
  • 感谢@APC 的建议

标签: sql oracle aggregation


【解决方案1】:

我想,你有一个错字和一个错过的GROUP BY 子句。另外,最好使用JOIN 子句和表别名。

SELECT SUM(FABRICATION.CURRENT_WEIGHT),
       MASTER_DRAWING_ASSIGNED.SUBCONT_ID
FROM FABRICATION,
     MASTER_DRAWING_ASSIGNED
WHERE MASTER_DRAWING_ASSIGNED.HEAD_MARK = FABRICATION.HEAD_MARK AND MASTER_DRAWING_ASSIGNED.PROJECT_NAME = 'PROCESSHOUSE'
  AND MASTER_DRAWING_ASSIGNED.SUBCONT_ID = 'BOBBY'
GROUP BY MASTER_DRAWING_ASSIGNED.SUBCONT_ID
【解决方案2】:

如果你想总结头标的总重量:

select subcont_id, project_name, head_mark, total_weight
  from master_drawing_assigned m
  left join
      (select head_mark hm, sum(current_weight) total_weight
         from fabrication group by head_mark) f
  on m.head_mark=f.hm
  where subcont_id='BOBBY' order by head_mark;

如果你想总结一个项目的总重量:

select subcont_id, project_name, sum(total_weight) total_weight
  from master_drawing_assigned m
  left join
      (select head_mark hm, sum(current_weight) total_weight
         from fabrication group by head_mark) f
  on m.head_mark=f.hm
  where subcont_id='BOBBY' group by subcont_id, project_name;

您可以在this fiddle

中查看结果

【讨论】:

    猜你喜欢
    • 2017-10-29
    • 2015-01-29
    • 2015-12-23
    • 2012-10-26
    • 1970-01-01
    • 2021-07-24
    • 2019-01-07
    • 1970-01-01
    相关资源
    最近更新 更多