繁体   English   中英

如何获取基于另一列的记录总数?

[英]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聚合函数组字段JobCodedesignation您可以了解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;

检查此链接以查看工作示例。

我认为,必须对表进行不同的重组,以避免数据冗余( 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);

检查此链接以查看工作示例。

希望它有用!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM