SQL-запрос с условием - подсчет новых и возвращаемых значений для каждого идентификатора - PullRequest
2 голосов
/ 19 сентября 2011

Итак, вот проблема, которую я пытался решить безуспешно последние пару дней: у меня есть таблица, в которой отслеживается участие людей (идентифицируемых по их уникальному 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

Это вообще возможно для начала?Любая идея о том, как я мог это сделать?

Большое спасибо!

1 Ответ

1 голос
/ 19 сентября 2011

Вы можете использовать подзапрос, чтобы определить первое событие для пользователя.Затем Access '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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...