[英]How to get sum of records based on another column?
我有下表:
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)
任何帮助表示赞赏。
您可以使用合计sum
函数:
SELECT JobCode, designation, SUM(salaryWithIncrement)
FROM table1
GROUP BY JobCode, designation
在当你有这样的要求多数情况下,用C语言实现GROUPBY基于所需的记录,在youu情况下哪些SQL聚合函数组字段JobCode
并designation
您可以了解GROUP BY这里MSDN
SELECT JobCode,designation,SUM(salaryWithIncrement)
FROM Job GROUP BY JobCode,designation
这是您的示例工作代码SQL Fiddle
为此,您必须在group by
语句中使用sum
函数。
select jobCode, designation, sum(salaryWithInc) from Job group by jobCode;
检查此链接以查看工作示例。
我认为,必须对表进行不同的重组,以避免数据冗余( 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);
检查此链接以查看工作示例。
希望它有用!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.