Mysql SQL使用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

我不太擅长sql,所以请容忍我

我有两张桌子。“分数”表包含分数和日期(得分日期),以及“比赛”表包含日期和球队名称

我想知道球队名字“阿尔法”是在上半年得分更多,还是在下半年只用一句话就得分更多

如果使用SELECT SUM(点),如何使用一条语句分割数据并进行加法

到目前为止,我已经:

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
会有帮助?直到几分钟前,我还无法发表评论。也许我应该说“我愿意发表评论,但没有足够的代表性。”:)对于新用户来说,这里的唯一选择就是谈谈为什么你的答案更好,而其他人的答案不更好。否则,我甚至不会提供答案,只会评论你的答案。而且,这是一个很好的观点。我应该按年份分组。直到几分钟前,我还不能发表评论。也许我应该说“我愿意发表评论,但没有足够的代表性。”:)对于新用户来说,这里的唯一选择就是谈谈为什么你的答案更好,而其他人的答案不更好。否则,我甚至不会提供答案,只会评论你的答案。而且,这是一个很好的观点。我应该按年分组的。