我有两个表,一个包含有关团队的信息,名为TEAMS,如下所示:
TEAMS
Name|City|Attendance
Jets NY 50
等
另一个持有游戏信息,名为GAMES:
GAMES
Home|Visitors|Date|Result
Jets Broncos 1/1/2012 Tie
等
我正在尝试设置一个查询,打印GAMES表中列出的月份日期,然后是当天的游戏数量,然后是当天玩游戏的总出勤次数。
现在,我可以创建打印出当月播放日期和当天播放的游戏的查询,但是当我尝试添加当天出席的列时,它根本无法正确显示。这是我目前的查询:
SELECT Day(Date) AS [Day of Week], Count(Day(Date)) AS [Games on Day]
FROM GAMES
GROUP BY Day(Date);
如果我只是将Sum(Attendance)
添加到SELECT
然后TEAMS
添加到FROM
,那么出勤编号就会显示出来的总数。 TEAMS
次当天比赛的次数。任何有关如何处理此问题的帮助将不胜感激,谢谢!
答案 0 :(得分:0)
GAMES和TEAM之间需要Inner JOIN
,因为您的出席是TEAM的一部分。
SELECT Day(G.Date) AS [Day of Week], Count(Day(G.Date)) AS [Games on Day], Sum(Attendance)
FROM GAMES G
INNER JOIN TEAM T
On G.HOME = T.NAME
GROUP BY Day(Date)
此外,如果您按DAY(Date)
进行分组,那么您只需返回一个月的日期(因此,2014年8月12日,您只需获得12
)。 2014年8月12日和2015年1月12日同一赛季有比赛时会发生什么?您将在这两个日期中获得总共玩过的游戏。仔细检查以确保这是您真正想要的。
此外,参加游戏可以逐游戏变化。例如,在预测恶劣天气的情况下,您可能没有售罄的人群。我认为您应该将Attendance
列移至GAME
。
修改强>
回答评论中的问题
SELECT Count(Day(G.Date)) AS [Games on Day], Sum(Attendance)
FROM GAMES G
INNER JOIN TEAM T
On G.HOME = T.NAME
WHERE G.DATE Between '01/01/2010' and '12/31/2010'
GROUP BY Day(Date)