У меня возникают проблемы при попытке понять, как структурировать мой запрос так, чтобы он мог «сбрасывать» и подсчитывать записи только после того, как произошел сброс.
Основа c Структура
Log Table
ID | Date | Time | SectorID | personnumber
1 | 2020-02-10 | 13:23:00 | 23 | 66 (This is a row to be counted)
2 | 2020-02-10 | 13:28:00 | 38 | 66 (This is a row to be counted)
3 | 2020-02-10 | 13:30:00 | 5 | 66 (This is a 'reset' row) (SectorID 5 is a reset)
4 | 2020-02-10 | 13:38:00 | 12 | 66 (This is a row to be counted)
5 | 2020-02-10 | 13:42:00 | 56 | 66 (This is a row to be counted)
Для вышеизложенного есть 2 записи, затем произошел сброс (который обозначен идентификатором сектора, равным 5), а затем еще 2 записи (другие записи могут быть любым другим числом, отличным от 5).
Итак, я хочу, чтобы 'count' возвращал 2
Ниже приведен запрос для подсчета всех записей без какой-либо функции сброса
SELECT
personnumber,
count(*) as occurrences
FROM log
WHERE personnumber IS NOT NULL
AND sectorid != 5
GROUP BY personnumber
HAVING count(*) > 1
ORDER BY occurrences DESC, personnumber
Это вернет
Personnumber | Occurrences
66 | 4
Надеюсь, это достаточно объяснит мою проблему. Любая помощь приветствуется. Спасибо Джон