所以这就是过去几天我一直试图解决的问题,但是没有成功:我有一张表跟踪人们(由他们独特的PartcipantId确定)参与某些事件(由他们独特的EventId)。
我想写一个SQL查询(我正在使用MS Access 2010),它为每个事件返回返回参与者的数量(即已经参与另一个具有较低EventId的事件),新参与者的数量(第一次出现,如果按EventId排序)和该事件的参与者总数?
例如:
ParticipantId | EventId
1 1
1 3
1 4
2 3
2 4
3 5
会给:
EventId | New | Returning | Total
1 1 0 1
3 1 1 2
4 0 2 2
5 1 0 1
这甚至可以开始吗?关于我怎么做的任何想法?
非常感谢!
答案 0 :(得分:1)
您可以使用子查询来确定用户的第一个事件。然后,访问权限iif
允许您仅计算New
列的第一个事件:
select e.eventid
, sum(iif(e.eventid = p.FirstEvent,1,0)) as [New]
, sum(iif(e.eventid <> p.FirstEvent,1,0)) as Returning
, count(p.participantid) as Total
from (
select participantid
, min(eventid) as FirstEvent
from Table1
group by
participantid
) as p
left join
Table1 e
on p.participantid = e.participantid
group by
e.eventid