我有一个查询,得到正确的团队和人数的数量的总和和计数的事件。但是,可以在上一个日期的同一位置的多个事件,所以我试图在单日单个位置来获得人的所有事件总数的总和。 这里是我目前使用的查询:SQL总和多行不集团通过
SELECT
loc_name,
eventDate,
COUNT(t_ID) as Number_of_Teams,
SUM(NbrOfPeople) as Number_of_People
FROM tblEventDate
WHERE
eventID = 1
and eventDate >='09/01/2013'
GROUP BY loc_name, eventDate
ORDER BY eventDate, loc_name
的样本数据集看起来像这样
loc_name |eventDate |Number_of_Teams |Number_of_people
TCC |2013-09-04|12 |38
SMF |2013-09-04|8 |12
这个查询,但是,只有让我的团队和个人的数字,其中EVENTID = 1。我需要能够得到一个总和,其中EVENTID IN(1,2,3,4,5)(最多每人每天5次位置的事件),而不必包括EVENTID在GROUP BY子句。我有点难住。
我已经试过CASE WHEN表达式,但需要在EVENTID通过最终分离这样的数据集的价值GROUP。
loc_name |eventDate |eventID |Number_of_Teams |Number_of_people
TCC |2013-09-04|1 |12 |38
TCC |2013-09-04|2 |9 |22
SMF |2013-09-04|1 |8 |12
SMF |2013-09-04|2 |4 |9
SMF |2013-09-04|3 |13 |31
我也尝试了嵌套SELECT语句,但那是一个卑鄙的失败。 :-)
最后,我需要一个数据集,看起来像:
loc_name |eventDate |Number_of_Teams |Number_of_people
TCC |2013-09-04|21 |60
SMF |2013-09-04|25 |52
注意,Number_of_Teams在所有事件的所有球队在当日位置的完整计数和NUMBER_OF_PEOPLE是当天所有赛事中所有队员的全部总和。
任何想法将不胜感激。
那么'WHERE eventID IN(1,2,3,4,5)'而不是'WHERE eventID = 1'怎么办? –
哦,天啊。我在这个问题上回答了我自己的血腥问题。这个答案非常简单,我一直在面对着我。 谢谢,胡安。 – crazybobcat
[谈话的第一鸭(https://blog.codinghorror.com/rubber-duck-problem-solving/)为赢!(你有没有问过这个问题) – xQbert