Вот определение вашей таблицы (как я понял из ваших комментариев и описания):
CREATE TABLE user_events (
user_id integer,
event varchar,
time timestamp without time zone,
value integer
);
Вот запрос, который вы просили:
SELECT
COUNT(user_id),
SUM(value)
FROM (
SELECT
DISTINCT ON (user_id)
user_id,time,value
FROM user_events
WHERE event='install'
ORDER BY user_id, time DESC
) last_installations
WHERE
time BETWEEN date '2018-01-01' AND date '2019-01-01';
Некоторые пояснения:
- внутренний запрос (
last_installations
) выбирает события последней установки для каждого пользователя - внешний запрос отфильтровывает только установки первой и второй версий и вычисляет
SUM(value)
(по мереспросил) и COUNT(user_id)
(я добавил для ясности - сколько пользователей сейчас используют версии 1 и 2)
ОБНОВЛЕНИЕ
сумма значений для всех событий по версии
SELECT
event,
CASE
WHEN time BETWEEN date '2018-01-01' AND timestamp '2018-05-30 23:59:59' THEN 1
WHEN time BETWEEN date '2018-06-01' AND timestamp '2018-12-31 23:59:59' THEN 2
WHEN time > date '2018-01-01' THEN 3
ELSE 0 -- unknown version
END AS version,
SUM(value)
FROM user_events
GROUP BY 1,2