我对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
这不会分开日期,我真的不知道从哪里开始。
答案 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