2014-04-22 79 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