2016-12-19 64 views
-2

如何查询两个表并对结果进行求和。我的意思是我有什么表查询两个表并总和

Job 
----- 
job_id 
job_cost 

而第二台

worker 
------ 
worker_id 
worker_name 

这里是透视表

finished_work 
-------- 
job_id 
worker_id 
hours 

所以我要总结从finished_work所有的时间,并根据job_cost到显示所有已完成作品的总量。例如

work_1 - 40 hours * 5(job_cost) = 200 
work_2 -3 hours * 15 = 45 

total = 245 

任何帮助表示赞赏

+0

您还可以发布一些示例数据以及预期结果集吗? –

+0

示例数据如:约翰,3小时,每小时5英里施工,彼得5小时,汽车修理,每小时10英镑 – user5996816

+0

因此,这里约翰收取总费用15,彼得总数为50.查询需要显示我总共从两个'65'。只是不知道如何查询和总结他们 – user5996816

回答

1

可能做到这一点是PROC SQL的最佳途径。这里有一个例子,我使用两个pro sql语句来打印出你可能需要的中间文件。如果没有,你可以运行第二个sql查询。

首先我们创建自己的数据集:

data job; 
job_id = 1; 
job_cost = 5; 
output; 
job_id = 2; 
job_cost = 10; 
output; 
run; 

data worker; 
worker_id = 1; 
worker_name = 'Jon'; 
output; 
worker_id = 2; 
worker_name = 'Peter'; 
output; 
run; 

data finished; 
job_id = 1; 
worker_id = 1; 
hours = 3; 
output; 
job_id = 2; 
worker_id = 2; 
hours = 5; 
output; 
run; 

这里的中介SQL文件:

proc sql noprint; 
create table projects as 
     select a.worker_name,b.hours,c.job_cost,b.hours*c.job_cost as total 
      from worker as a 
     left join finished as b 
      on a.worker_id = b.worker_id 
     left join job as c 
      on b.job_id = c.job_id;quit; 

,这里是最后的答案只需一个步骤:

proc sql noprint; 
    create table project as 
      select sum(total) as Grand_Total 
        from(select a.worker_name,b.hours,c.job_cost,b.hours*c.job_cost as total 
           from worker as a 
         left join finished as b 
          on a.worker_id = b.worker_id 
         left join job as c 
          on b.job_id = c.job_id);quit; 

对不起SAS--认为这是来自SAS的问题。 sql语句对mysql有效,只需删除proc sql noprint行

+0

非常感谢! – user5996816