2014-03-01 48 views
4

本期我的表格有三列:播放器,团队和Date_Played。SQL与群组的差异计数

Player   Team   Date_Played 
John Smith  New York  2/25/2014 
Joe Smith  New York  2/25/2014 
Steve Johnson New York  2/25/2014 
Steph Curry Orlando  2/25/2014 
Frank Anthony Orlando  2/26/2014 
Brian Smith New York  2/26/2014 
Steve Johnson New York  2/27/2014 
Steph Curry New York  2/28/2014 

我知道如何获得的不同的团队名称或播放日期的名单,但我正在寻找的是一个查询,将通过团队组和计数不同的团队&日期组合的数量。所以输出应该是这样的:

Team   Count 
New York  4 
Orlando  2 

到目前为止,我有:

SELECT DISTINCT Tm, Count(Date_Played) AS Count 
FROM NBAGameLog 
GROUP BY NBAGameLog.[Tm]; 

但是这给了我的按日期分组的记录总量。

回答

4

此查询在Access 2010中进行了测试:

SELECT Team, Count(Date_Played) AS Count 
FROM 
    (
     SELECT DISTINCT Team, Date_Played 
     FROM NBAGameLog 
    ) AS whatever 
GROUP BY Team 
+0

这样做,谢谢! – fullOfQuestions

2

如果我理解正确,你正在寻找这样的查询:

SELECT x.Team, count(*) 
FROM 
    (SELECT Team, Date_Played 
    FROM NBAGameLog 
    GROUP BY Team, Date_Played) AS x 
GROUP BY x.Team 
+0

访问说:“您试图执行查询不包含指定的表达式'计数'作为聚合函数的一部分。” –

+0

这实际上给了我原来的结果。我基本上是在寻找每个球队参加比赛的天数。所以在上面的例子中,纽约在四个不同的日子里演奏。 – fullOfQuestions

+0

我想upvote这个,但正确的说法是'选择x.TM,计数(*)'。 –

3

少了几分代码:

SELECT Team, Count(distinct Date_Played) AS Count 
FROM NBAGameLog 
GROUP BY Team 

它确实显示与第一个答案相同的执行计划。