Skip to content

Instantly share code, notes, and snippets.

@sofakingworld
Last active June 9, 2019 04:06
Show Gist options
  • Save sofakingworld/fbbc166a6fcf00836883335546868a14 to your computer and use it in GitHub Desktop.
Save sofakingworld/fbbc166a6fcf00836883335546868a14 to your computer and use it in GitHub Desktop.
Incomes
;WITH incomes as (
-- группируем по часу, сразу считаем количество проходов
SELECT date_part as , count(*)
FROM
(SELECT
DATE_PART('hour', started.created_at) date_part,
ROW_NUMBER() OVER (PARTITION BY started.id) rn
FROM sensor_triggers started
JOIN sensor_triggers ended
-- Проверяем, что срабатывание между датчиками < 5 секунд
ON ended.created_at - started.created_at BETWEEN '00:00:00'::time AND '00:00:05'::time
-- Определяем, от какого к какому сенсерому ведем отсчет
AND started.sensor_id = 1 AND ended.sensor_id = 2
-- В данном случае считаем количество "приходящих"
-- посетителей (от датчика 1 к датчику 2)
) as temporally
-- Если у датчика 2 были лжесрабатывания, то при джойне
-- будут лишние записи, для этого, поэтому мы ввели подсчет
-- номера строки в группе, т.к. нам достаточно получить
-- первую запись в группировке
WHERE rn = 1
GROUP BY date_part
)
SELECT * FROM incomes;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment