如何总结重复行的总和?

时间:2016-12-06 07:58:00

标签: oracle

我试图总结顾问通过执行服务获得的总成本,但由于我需要从服务表中获取成本并从另一个表中执行服务量,因此总成本需要为从两个不同的表中组合两个不同的列。但是,它不会总结重复行的总成本。

有两个表,Services_Performed和Service。

Service_Performed表

Service_id|Temployee_id|ServicePerformed_Amount
----------|------------|-----------------------
         2|           1|                      2
----------|------------|-----------------------
         4|           1|                      1
----------|------------|-----------------------
         1|           3|                      3
----------|------------|-----------------------
         9|           3|                      5
----------|------------|-----------------------
         3|           5|                      5
----------|------------|-----------------------
        10|           5|                      4
----------|------------|-----------------------
         8|           5|                      1

服务表

Service_id|Service_cost
----------|------------
         1|       18000 
----------|------------
         2|       20000
----------|------------
         3|       34000
----------|------------
         4|       16000
----------|------------
         5|       40588
----------|------------
         6|       20358
----------|------------
         7|       14852

我使用以下查询来获取服务的总成本,具体取决于服务的成本和执行的数量。

SELECT 
TECHNICAL.TEMPLOYEE_ID,CONSULTANT.EMP_NAME, 
SERVICES_PERFORMED.SP_AMOUNT * SERVICE.SER_COST AS TotalCost

FROM SERVICES_PERFORMED,TECHNICAL,CONSULTANT,SERVICE

WHERE TECHNICAL.TEMPLOYEE_ID = SERVICES_PERFORMED.TEMPLOYEE_ID AND
TECHNICAL.TEMPLOYEE_ID = CONSULTANT.EMPLOYEE_ID AND
SERVICES_PERFORMED.SERVICE_ID = SERVICE.SERVICE_ID

ORDER BY TotalCost DESC;

结果如下:

    Temployee_id|Employee_name|TotalCost
    ------------|------------|----------
               3|         Kim|    179450
    ------------|------------|----------
               5|       David|    170000
    ------------|------------|----------
               5|       David|    143480
    ------------|------------|----------
               7|        Andy|    122148
    ------------|------------|----------
               9|       Oscar|    121764
    ------------|------------|----------
               3|         Kim|     54000
    ------------|------------|----------
               1|       Danny|     40000

但我想要做的主要是提高总费用,看看每个人从表现服务中获得的最多。我如何总结相同名称的金额。

2 个答案:

答案 0 :(得分:1)

尝试使用以下

 SELECT 
 TECHNICAL.TEMPLOYEE_ID,CONSULTANT.EMP_NAME, 
 SUM(SERVICES_PERFORMED.SP_AMOUNT * SERVICE.SER_COST) AS TotalCost

 FROM SERVICES_PERFORMED,TECHNICAL,CONSULTANT,SERVICE

 WHERE TECHNICAL.TEMPLOYEE_ID = SERVICES_PERFORMED.TEMPLOYEE_ID AND
 TECHNICAL.TEMPLOYEE_ID = CONSULTANT.EMPLOYEE_ID AND
 SERVICES_PERFORMED.SERVICE_ID = SERVICE.SERVICE_ID

 GROUP BY TECHNICAL.TEMPLOYEE_ID,CONSULTANT.EMP_NAME
 ORDER BY TotalCost DESC;

答案 1 :(得分:0)

试试这个:

SELECT a.temployee_id,b.emp_name,Sum(c.service_cost) 
    FROM  service_performed a , consultatnt b,service c
     where a.temployee_id=b.temployee_id  AND  a.service_id=c.service_id
   GROUP BY  a.temployee_id,b.emp_name