MS-SQL:SQL";“集团”;创建重复项?

MS-SQL:SQL";“集团”;创建重复项?,sql,group-by,Sql,Group By,当我对行进行计数(代码#1)时,我得到了大约880行的正确计数 当我按日期对计数进行分组时,它突然增加了大约100(代码#2) 如果有人能帮我理解我的问题,我将不胜感激 提前谢谢 以下是表格结构: tblApplicants: applicantID (index) | ApplyingForYear (nvarchar) ------------------------------------------------------ 1

当我对行进行计数(代码#1)时,我得到了大约880行的正确计数

当我按日期对计数进行分组时,它突然增加了大约100(代码#2)

如果有人能帮我理解我的问题,我将不胜感激

提前谢谢

以下是表格结构:

tblApplicants:

applicantID (index)   |     ApplyingForYear (nvarchar) 
------------------------------------------------------
1                           2013/14
11                          2013/14
13                          2013/14
12                          2013/14
15                          2013/14
21                          2012/13


tblApplicantSchools_shadow: 

id (index)   |    applicantID    |    updated (datetime)   |   statusID (int)   |   schoolID (int)
-----------------------------------------------------------------------------------------------------
1                   11                  2012-09-24 00:00:00.000     3                   2
1                   13                  2012-10-24 00:00:00.000     4                   2
2                   15                  2012-11-24 00:00:00.000     3                   4
3                   13                  2012-03-24 00:00:00.000     4                   3
4                   12                  2012-09-24 00:00:00.000     4                   1
5                   21                  2012-11-03 00:00:00.000     5                   2
6                   11                  2012-09-04 00:00:00.000     4                   4
代码#1(正确计数):

代码#2(组,计数不正确):

预期结果:

    Datesubmitted              TotalAppsPerWeek
    -------------------------------------------------------
    2011-11-14 00:00:00.000    1
    2012-09-24 00:00:00.000    1
    2012-10-08 00:00:00.000    3
    2012-10-22 00:00:00.000    2
    2012-10-29 00:00:00.000    2
    2012-11-05 00:00:00.000    2
    2012-11-12 00:00:00.000    5
    2012-11-19 00:00:00.000   26
    2012-11-26 00:00:00.000   106
    2012-12-03 00:00:00.000   353
    2012-12-10 00:00:00.000   298

FIDDLE CODE:

我认为这是因为第二个查询中的distinct应用于一个组,所以tblApplicantSchools\u shadow.applicationId,具有distinct[tblApplicantSchools\u shadow]。在第一个查询中已更新的折叠并计为一,但在第二个查询中它们没有,因为他们在不同的组中。

您使用的是
DISTINCT
GROUP BY
,两者都做相同的事情。你应该使用其中一个

如果您想使用
分组依据

那就试试这个

   GROUP BY tblApplicantSchools_shadow.applicantID
在第一个查询中,它已按
tblApplicantSchools\u shadow.applicationId
分组,因此我不知道为什么在第二个查询中再次分组

编辑:

MySQL扩展了GROUP BY的使用,因此您可以在SELECT列表中使用GROUP BY子句中未出现的非聚集列或计算。您可以使用此功能通过避免不必要的列排序和分组来获得更好的性能。例如,您不需要在以下查询中对tblApplicantSchools\u shadow.applicationId进行分组


谢谢我需要的是不同的,因为可能有几个条目是相同的
applicationId
,并且
statusID=4
——我只想要其中一个——每个应用程序为什么需要第二组?你是对的——这是我拼凑的部分代码。我正在分组,这样我就可以看到在某一天我得到了多少申请者。因此,我正在进行计数+日期,以下是实际代码:
选择DATEADD(ww,(DATEDIFF(ww,0,[tblApplicantSchools\u shadow].updated)),0)作为Datesubmitted,计数(DISTINCT[tblApplicantSchools\u shadow].applicationId)作为TotalAppsPerWeek
您能给出一些示例数据和您想要的结果吗?请更新您的问题,并添加一些表的示例数据和期望的结果。
    Datesubmitted              TotalAppsPerWeek
    -------------------------------------------------------
    2011-11-14 00:00:00.000    1
    2012-09-24 00:00:00.000    1
    2012-10-08 00:00:00.000    3
    2012-10-22 00:00:00.000    2
    2012-10-29 00:00:00.000    2
    2012-11-05 00:00:00.000    2
    2012-11-12 00:00:00.000    5
    2012-11-19 00:00:00.000   26
    2012-11-26 00:00:00.000   106
    2012-12-03 00:00:00.000   353
    2012-12-10 00:00:00.000   298
   GROUP BY tblApplicantSchools_shadow.applicantID
In standard SQL, you would have to add tblApplicantSchools_shadow.applicantID to the GROUP BY clause. In MySQL, the name is redundant.