我有下表:
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)
感谢任何帮助。
答案 0 :(得分:2)
您可以使用汇总sum
功能:
SELECT JobCode, designation, SUM(salaryWithIncrement)
FROM table1
GROUP BY JobCode, designation
答案 1 :(得分:1)
在大多数情况下,当您有此类要求时,请使用具有SQL聚合功能的GroupBY实现
根据您想要的记录对字段进行分组,例如JobCode
和designation
您可以在MSDN
SELECT JobCode,designation,SUM(salaryWithIncrement)
FROM Job GROUP BY JobCode,designation
以下是您的示例工作代码SQL Fiddle
答案 2 :(得分:1)
为此,您必须在sum
语句中使用group by
函数。
select jobCode, designation, sum(salaryWithInc) from Job group by jobCode;
选中此link以查看有效的示例。
在我看来,您必须对表进行不同的重构,以避免数据冗余(jobCode
和designation
)。为此,您可以有两个表,一个包含jobCode
和designation
,另一个包含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以查看有效的示例。
希望它有用!