Mysql SQL使用SUM:在同一语句中进行两次加法?
我不太擅长sql,所以请容忍我 我有两张桌子。“分数”表包含分数和日期(得分日期),以及“比赛”表包含日期和球队名称 我想知道球队名字“阿尔法”是在上半年得分更多,还是在下半年只用一句话就得分更多 如果使用SELECT SUM(点),如何使用一条语句分割数据并进行加法 到目前为止,我已经:Mysql SQL使用SUM:在同一语句中进行两次加法?,mysql,sql,Mysql,Sql,我不太擅长sql,所以请容忍我 我有两张桌子。“分数”表包含分数和日期(得分日期),以及“比赛”表包含日期和球队名称 我想知道球队名字“阿尔法”是在上半年得分更多,还是在下半年只用一句话就得分更多 如果使用SELECT SUM(点),如何使用一条语句分割数据并进行加法 到目前为止,我已经: SELECT Game.Date, Tname, SUM(point) FROM Game INNER JOIN Points ON Game.Date = Points.Date WHERE Game.Tn
SELECT Game.Date, Tname, SUM(point)
FROM Game
INNER JOIN Points ON Game.Date = Points.Date
WHERE Game.Tname = “Alpha”
GROUP BY Game.Date, Game.Tname
但这并没有把日期分开,我真的不知道从这里走到哪里 我想这可能就是你想要的。这将计算每个日期Alpha的所有点数
SELECT Game.Date, SUM(point)
FROM Game
INNER JOIN Points ON Game.Date = Points.Date
WHERE Game.Tname = “Alpha”
GROUP BY Game.Date
我想这可能就是你想要的。这将计算每个日期Alpha的所有点数
SELECT Game.Date, SUM(point)
FROM Game
INNER JOIN Points ON Game.Date = Points.Date
WHERE Game.Tname = “Alpha”
GROUP BY Game.Date
我想你的很多问题都在这里:
INNER JOIN Points ON Game.Date = Game.Date
我想这应该是
INNER JOIN Points ON Game.Date = Points.Date
我想你的很多问题都在这里:
INNER JOIN Points ON Game.Date = Game.Date
我想这应该是
INNER JOIN Points ON Game.Date = Points.Date
有条件的SUM()
可以:
SELECT YEAR(Game.Date), Tname
, SUM(CASE WHEN QUARTER(Game.Date) <= 2 THEN point END) AS FirstHalf
, SUM(CASE WHEN QUARTER(Game.Date >= 3 THEN point END) AS LastHalf
FROM Game
INNER JOIN Points ON Game.Date = Points.Date
WHERE Game.Tname = “Alpha”
GROUP BY YEAR(Game.Date), Game.Tname
选择年份(游戏日期),t名称
,和(当季度(游戏日期)=3时的情况)作为上半场
从游戏
游戏上的内部连接点。日期=点。日期
WHERE Game.Tname=“Alpha”
按年份分组(游戏日期),游戏名称
编辑:您可能希望指定一年或一年一组,但这里重要的是有条件的SUM()
的基本思想。有条件的SUM()
可以:
SELECT YEAR(Game.Date), Tname
, SUM(CASE WHEN QUARTER(Game.Date) <= 2 THEN point END) AS FirstHalf
, SUM(CASE WHEN QUARTER(Game.Date >= 3 THEN point END) AS LastHalf
FROM Game
INNER JOIN Points ON Game.Date = Points.Date
WHERE Game.Tname = “Alpha”
GROUP BY YEAR(Game.Date), Game.Tname
选择年份(游戏日期),t名称
,和(当季度(游戏日期)=3时的情况)作为上半场
从游戏
游戏上的内部连接点。日期=点。日期
WHERE Game.Tname=“Alpha”
按年份分组(游戏日期),游戏名称
编辑:您可能希望指定一年或一年一组,但这里的重要部分是有条件的
SUM()
的基本思想。您的加入被搞砸了。。。您将转到同一表上的同一列。game.Date=game.Date。假设这是一个错误,因为它将创建交叉连接/笛卡尔积。另外,我更喜欢MS SQL,但我相信您正在寻找:
SELECT
CASE WHEN QUARTER(Game.Date) < 3
THEN "FirstHalfOfYear"
ELSE "SecondHalfOfYear"
END AS YearHalf,
Tname,
SUM(point) AS TotalPoints
FROM Game
INNER JOIN Points
ON Points.Date = Game.Date
WHERE Game.Tname = "Alpha"
GROUP BY
CASE WHEN QUARTER(Game.Date) < 3
THEN "FirstHalfOfYear"
ELSE "SecondHalfOfYear"
END, Game.Tname
选择
季度(游戏日期)小于3时的情况
然后是“上半年”
否则“下半年”
下半年结束,
名称,
总和(点)作为总点
从游戏
内连接点
积分。日期=游戏。日期
WHERE Game.Tname=“Alpha”
分组
季度(游戏日期)小于3时的情况
然后是“上半年”
否则“下半年”
结束,游戏。Tname
您的加入被搞砸了。。。您将转到同一表上的同一列。game.Date=game.Date。假设这是一个错误,因为它将创建交叉连接/笛卡尔积。另外,我更喜欢MS SQL,但我相信您正在寻找:
SELECT
CASE WHEN QUARTER(Game.Date) < 3
THEN "FirstHalfOfYear"
ELSE "SecondHalfOfYear"
END AS YearHalf,
Tname,
SUM(point) AS TotalPoints
FROM Game
INNER JOIN Points
ON Points.Date = Game.Date
WHERE Game.Tname = "Alpha"
GROUP BY
CASE WHEN QUARTER(Game.Date) < 3
THEN "FirstHalfOfYear"
ELSE "SecondHalfOfYear"
END, Game.Tname
选择
季度(游戏日期)小于3时的情况
然后是“上半年”
否则“下半年”
下半年结束,
名称,
总和(点)作为总点
从游戏
内连接点
积分。日期=游戏。日期
WHERE Game.Tname=“Alpha”
分组
季度(游戏日期)小于3时的情况
然后是“上半年”
否则“下半年”
结束,游戏。Tname
上半年和下半年你的逻辑是什么?上半年和下半年你的逻辑是什么?对不起,那只是一个输入错误。对不起,那只是一个输入错误。为什么你希望删除TName
会有帮助?为什么你希望删除TName
会有帮助?直到几分钟前,我还无法发表评论。也许我应该说“我愿意发表评论,但没有足够的代表性。”:)对于新用户来说,这里的唯一选择就是谈谈为什么你的答案更好,而其他人的答案不更好。否则,我甚至不会提供答案,只会评论你的答案。而且,这是一个很好的观点。我应该按年份分组。直到几分钟前,我还不能发表评论。也许我应该说“我愿意发表评论,但没有足够的代表性。”:)对于新用户来说,这里的唯一选择就是谈谈为什么你的答案更好,而其他人的答案不更好。否则,我甚至不会提供答案,只会评论你的答案。而且,这是一个很好的观点。我应该按年分组的。