[英]Adding column values of 2 or more non distinct rows. SQL
我有一个具有以下方案的表: http : //i.stack.imgur.com/zH2zz.png
该表适用于冰球联赛(Link Here) 。 这是第二季统计数据将保存在数据库中。 如果您在链接中选择下拉菜单,您将看到我可以为两个季节生成前20个列表(1个季节除1个测试员外没有其他数据)。 我们的目标是将这两个赛季合计为“所有时间”前20名。 我尝试使用sum函数,但是实际上将每一行都添加到了1中。
我只想对重复的玩家ID的行求和。 例如,我是玩家ID#2,我需要为每个包含目标PID的行添加每个进球和助攻,但对于1个查询中的所有前20个玩家,我都需要此目标。 这是到目前为止我正在使用的一些查询。
SELECT Rosters.PID, Rosters.Goals, Rosters.Assists, Rosters.PIM, Rosters.Num, Rosters.TID, Players.pid, Players.firstname, Players.lastname,
(Rosters.Goals + Rosters.Assists) AS Points
FROM Rosters
INNER JOIN Players
ON Rosters.PID = Players.pid
WHERE Rosters.TID BETWEEN $parameter
ORDER BY Points DESC, Goals DESC
LIMIT 0,20
$parameter
基于团队ID(TID)。共有16个TID(每个赛季8个)。 当参数为1-16时,此查询将获取所有记录,只是不会通过PID来添加不同的行(这最终是我想学习的方法)。 这是显示如何实例化查询的下拉列表
<div class="ddstyle">
<select name="DropDownTeams" id="DDTeams">
<option>Select a Season</option>
<option value="stats2.php?tid=9 AND 16">2015-2016</option>
<option value="stats2.php?tid=1 AND 8">2014-2015</option>
<option value="stats2.php?tid=1 AND 16">All Time</option>
</select>
</div>
我试着做:
SELECT Rosters.PID, SUM( Rosters.Goals ) Goals, SUM( Rosters.Assists ) Assists, SUM( Rosters.PIM ) PIM, Rosters.Num, Rosters.TID, Players.pid, Players.firstname, Players.lastname,
SUM((Rosters.Goals + Rosters.Assists)) AS Points
FROM Rosters
INNER JOIN Players
ON Rosters.PID = Players.pid
WHERE Rosters.TID BETWEEN 1 AND 16
ORDER BY Points DESC, Goals DESC
LIMIT 0,20;
但这只是将每条记录加到一行中。 当与SUM()函数一起使用时,Where子句显然无法按我想要的方式工作。
包括“ Group BY
依据”部分http://www.w3schools.com/sql/sql_groupby.asp
SELECT Rosters.PID
,SUM(Rosters.Goals) Goals
,SUM(Rosters.Assists) Assists
,SUM(Rosters.PIM) PIM
,Players.pid
,SUM((Rosters.Goals + Rosters.Assists)) AS Points
FROM Rosters
INNER JOIN Players ON Rosters.PID = Players.pid
WHERE Rosters.TID BETWEEN 1
AND 16
GROUP BY
Players.pid
ORDER BY Points DESC
,Goals DESC
LIMIT 0
,20;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.