Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在sql中计算连续年份的总和_Mysql - Fatal编程技术网

Mysql 如何在sql中计算连续年份的总和

Mysql 如何在sql中计算连续年份的总和,mysql,Mysql,我正在使用拉曼棒球数据库,并试图查询该数据库,以列出连续两年的总工资、球队名称以及每支总工资为前一年1.5倍的球队的年份 很难提出一个查询来汇总所有球员每年和每支球队的工资,并连续两年这样做。现在还不确定这是否有什么意义,但我补充了我正在努力实现的目标 这是我现在的问题 Select S1.yearID, S1.teamID, S2.yearID, S2.teamID, sum(S1.salary),sum(S2.salary) from salaries as S1 , salaries as

我正在使用拉曼棒球数据库,并试图查询该数据库,以列出连续两年的总工资、球队名称以及每支总工资为前一年1.5倍的球队的年份

很难提出一个查询来汇总所有球员每年和每支球队的工资,并连续两年这样做。现在还不确定这是否有什么意义,但我补充了我正在努力实现的目标

这是我现在的问题

Select S1.yearID, S1.teamID, S2.yearID, S2.teamID, sum(S1.salary),sum(S2.salary)
from salaries as S1 , salaries as S2
where S1.yearID +1 = S2.yearID and S1.teamID = S2.teamID
group by S1.teamID
这是工资表

CREATE TABLE "salaries" (
"yearID" int NOT NULL DEFAULT '0',
"teamID" varchar(3) NOT NULL DEFAULT '',
"lgID" varchar(2) NOT NULL DEFAULT '',
"masterID" varchar(9) NOT NULL DEFAULT '',
"salary" float DEFAULT NULL,
PRIMARY KEY ("yearID","teamID","lgID","masterID")
);

这是我试图在那里实现的查询结果,只需将它们添加到第一行的列中,如下所示

Select S1.yearID, S1.teamID, S2.yearID, S2.teamID, sum(S1.salary+S2.salary)
from salaries as S1 , salaries as S2
where S1.yearID +1 = S2.yearID and S1.teamID = S2.teamID
group by S1.teamID, S1.yearID
我想这应该是你想要的,试试看

编辑:考虑您的评论和更新:

Select *, `Previous Salary`/`Salary` * 100 AS `Percent Increase` from (
Select S1.teamID AS `Team Name`, 
       S1.lgID AS `League`, 
       S1.yearID AS `Previous Year`, 
       sum(S1.salary) AS `Previous Salary`,
       S2.yearID AS `Year`,  
       sum(S2.salary) AS `Salary`
from salaries as S1 , salaries as S2
where S1.yearID -1 = S2.yearID and S1.teamID = S2.teamID
group by S1.teamID) salaries

你可以这样做:

create table salaries (yearid int, teamid int, salary int);
insert into salaries values 
(2010, 1, 1), (2012, 1, 2), (2013, 1, 3), (2014, 1, 4),
(2010, 2, 1), (2011, 2, 1), (2013, 2, 3), (2014, 2, 4);

select concat(coalesce(a.yearid,'na'), ' to ', coalesce(b.yearid,'na')) as yr, a.teamid, sum(coalesce(a.salary,0) + coalesce(b.salary,0)) as salary2yr
from salaries a
left join salaries b on 
    a.teamid = b.teamid and 
    a.yearid = b.yearid-1
group by a.teamid, concat(coalesce(a.yearid,'na'), ' to ', coalesce(b.yearid,'na'))
order by a.teamid, yr
结果

yr           | teamid | salary2yr
2010 to na   | 1      | 1
2012 to 2013 | 1      | 5
2013 to 2014 | 1      | 7
2014 to na   | 1      | 4
2010 to 2011 | 2      | 2
2011 to na   | 2      | 1
2013 to 2014 | 2      | 7
2014 to na   | 2      | 4

它只给我35行,我试图列出每一个棒球队,有连续两年的工资总额。这将导致1000多名球员缺阵,这就是为什么,我补充说,谢谢你的帮助,我是个白痴,我只需要把所有球员每年的工资总额加起来。和1985年一样,把该队球员的总工资加起来,然后把1986年的工资加起来。我用我试图实现的实际查询更新了我的问题。我已经更新了我的查询,以与您的问题更新相对应。现在,如果我们只能想办法让Charlie Hustle进入库珀镇+1用于显示研究成果(使用8mb.sql文件)