使用SUM的SQL:在同一个语句中添加两个?

时间:2013-11-15 21:53:24

标签: mysql sql

我对sql并不擅长,所以请耐心等待。

我有两张桌子。一个'点'表,其中包含点和日期(得分点)和一个包含日期和团队名称的'游戏'表。

我试图找出球队名称'Alpha'是否在今年上半年得分更多,或者第二次只使用一个陈述。

如果您正在使用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

这不会分开日期,我真的不知道从哪里开始。

4 个答案:

答案 0 :(得分:3)

条件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

编辑:您可能希望按年指定年份或组,但条件SUM()的基本概念是此处的重要部分。

答案 1 :(得分:1)

你的加入搞砸了...你要去同一张桌子上的同一列。 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

答案 2 :(得分:0)

我认为这可能只是你想要的。这将汇总每个日期Alpha的所有点数。

SELECT Game.Date, SUM(point)
FROM Game
INNER JOIN Points ON Game.Date = Points.Date
WHERE Game.Tname = “Alpha”
GROUP BY Game.Date

答案 3 :(得分:0)

我希望你的问题很多:

INNER JOIN Points ON Game.Date = Game.Date

我认为这应该是

INNER JOIN Points ON Game.Date = Points.Date