2014-04-22 82 views
0

我有这样一个表:如何汇总SQL表中的行?

EMP_NAME HOURS_WORKED 
-------- ------------ 
Jane    10 
Jane    2 
Jane    18 
Jane    12 
Alex    7 
Alex    3 
Alex    5 
Danny    20 
Danny    16 

而且我想它凝结成:

EMP_NAME TOTAL_HOURS_WORKED 
-------- ------------------ 
Jane      42 
Alex      15 
Danny     36 

我想这一点,但它并没有运行:

SELECT 
    DISTINCT EMP_NAME, 
    SUM(HOURS_WORKED) TOTAL_HOURS_WORKED 
    FROM EMPLOYEES 
; 

据正如我所知道的,您可以将列与+结合起来,并且您可以总结全部行到电池使用SUM(),但我不知道如何组合这样的行。

我已经做了我最好的谷歌赋,但我仍然无法找到任何东西来帮助我:/


请注意,这是我当场做出了表率表。我从来没有使用名称作为主键;)

+0

任何特定的方言?在这个例子中你没有使用名字作为PK。其实你没有PK,这是一个问题!然而,只要你很高兴它是独一无二的,并且不能改变(或者你知道如何管理它,如果有的话),一个名字将是一个很好的PK。) – Strawberry

+0

@Strawberry Oracle,但我想要一个通用的答案if可能的 – Supuhstar

+0

'HOURS_WORKED'的类型是什么? –

回答

2

试试这个:SQL的

SELECT EMP_NAME, 
SUM(HOURS_WORKED) TOTAL_HOURS_WORKED 
FROM EMPLOYEES 
GROUP BY EMP_NAME 
+0

同意。一般来说,在Oracle中使用聚合函数时,最好使用DISTINCT(分析)上的GROUP BY(聚合)。在[AskTom](https://asktom.oracle.com)上对此主题进行了大量讨论。 – FumblesWithCode