2014-12-06 61 views
1

我有如下表:如何根據另一列獲取記錄總和?

JobCode | Designation | SalaryWithIncrement 
---------------------------------------------- 
JC001 | IT | 150,000 
JC001 | IT | 155,000 
JC002 | Sales | 100,000 
JC003 | HR | 200,000 
JC003 | HR | 210,000 
JC003 | HR | 220,000 

需要的輸出:

JobCode | Designation | SalaryWithIncrement 
------------------------------------------------ 
JC001 | IT   | 305,000 
JC002 | Sales  | 100,000 
JC003 | HR   | 630,000 

下面是我使用的代碼,但我分組

SELECT JobCode, designation, salaryWithIncrement 
FROM table1 
group by (JobCode) 

任何後沒有得到總計幫助表示讚賞。

+2

你怎麼得到150 + 155 = 205?我認爲你犯了一個錯字。 – AdamMc331 2014-12-06 16:19:47

+1

謝謝@ McAdam331。修好了 – h4kl0rd 2014-12-07 09:34:03

+0

謝謝。如果這是一個錯字,或者我誤解了這個問題,我永遠無法確定。 – AdamMc331 2014-12-07 17:57:49

回答

2

可以使用聚合sum功能:當你有這樣的要求

SELECT JobCode, designation, SUM(salaryWithIncrement) 
FROM  table1 
GROUP BY JobCode, designation 
1

在大多數情況下,實現使用GROUPBY與SQL聚合函數 集團的字段根據你想記錄一下,youu情況下JobCodedesignation 您可以瞭解GROUP BY這裏MSDN

SELECT JobCode,designation,SUM(salaryWithIncrement) 
FROM Job GROUP BY JobCode,designation 

這是你的工作示例代碼SQL Fiddle

1

爲此,您必須在group by語句中使用sum函數。

select jobCode, designation, sum(salaryWithInc) from Job group by jobCode; 

檢查此link看到一個工作示例。

在我看來,你不得不調整不同的表,以避免數據冗餘(jobCodedesignation)。爲此,您可以有兩個表格,一個是jobCodedesignation,另一個是salaryWithInc

create table Job (jobId int auto_increment, jobCode varchar(5), designation varchar(25), primary key (jobId)); 
create table Salary (job int, salaryWithInc decimal(5,2), foreign key (job) references Job (jobId)); 
insert into Job (jobCode, designation) values ("JC001", "IT"),("JC002", "Sales"), ("JC003", "HR"); 
insert into Salary values (1,150.00), (1,155.00),(2,100.00),(3,200.00),(3,210.00),(3,220.00); 

在這種情況下,您可以使用此查詢來獲得所需的結果:

select J.jobCode, J.designation, sum(S.salaryWithInc) from Job as J join Salary as S on J.jobId=S.job group by (J.jobId); 

檢查這個link看到一個工作的例子。

希望它有用!

相關問題