Этот запрос возвращает все строки, которые я определю как «отзыв». Смотрите скриншот для результатов. Я пытался и до сих пор не смог выяснить, как суммировать количество строк (каждый отдельный отзыв) для каждого идентификатора. На скриншоте результатов ниже показан только один идентификатор: 61401. Но есть и другие идентификаторы ниже в фактических результатах. Я хотел бы посчитать количество строк (повторений) на уникальный идентификатор. Я продолжаю сталкиваться с совокупными ошибками. Я пробовал подзапросы и 'group by', но просто не могу понять это. Есть идеи, как я могу это сделать? В конечном итоге мне нужны два столбца: id и rec_count.
SELECT
prr_u.id,
cprr_r.created_at AS recall_create_date,
prr_m.created_at AS trial_start_date,
prr_m.trial_days AS trial_period_length,
prr_m.created_at + interval '1 day' * trial_period_length AS trial_end_date
FROM my_db.productionrr_users AS prr_u
INNER JOIN my_db.productionrr_memberships AS prr_m
ON prr_u.id = prr_m.id
INNER JOIN my_db.c4productionrr_recalls AS cprr_r
ON cprr_r.user_id = prr_m.id
WHERE recall_create_date BETWEEN trial_start_date AND trial_end_date;
Вот фрагмент результата:
I ' Хотелось бы видеть результаты, которые выглядят так (где revs_count - просто число строк, возвращаемых на один идентификатор):
Я также попробовал предложение Тана здесь и получить совокупную БД Errorcode = 500310.
SELECT
prr_u.id as id,
cprr_r.created_at AS recall_create_date,
prr_m.created_at AS trial_start_date,
prr_m.trial_days AS trial_period_length,
prr_m.created_at + interval '1 day' * trial_period_length AS trial_end_date,
COUNT(DISTINCT recall_create_date) as recall_count
FROM my_db.productionrr_users AS prr_u
INNER JOIN my_db.productionrr_memberships AS prr_m
ON prr_u.id = prr_m.id
INNER JOIN my_db.c4productionrr_recalls AS cprr_r
ON cprr_r.user_id = prr_m.id
WHERE recall_create_date BETWEEN trial_start_date AND trial_end_date
GROUP BY prr_u.id;
Кроме того, я могу подсчитать общее количество строк в запросе, но я все еще не могу сделать это для каждого идентификатора:
SELECT COUNT(*) FROM (
SELECT prr_u.id, prr_u.email, prr_m.status, cprr_r.created_at AS recall_create_date, prr_m.created_at AS trial_start_date, prr_m.trial_days AS trial_period_length, prr_m.created_at + interval '1 day' * trial_period_length AS trial_end_date, prr_m.expires_at
FROM my_db.productionrr_users AS prr_u
INNER JOIN my_db.productionrr_memberships AS prr_m
ON prr_u.id = prr_m.id
INNER JOIN my_db.c4productionrr_recalls AS cprr_r
ON cprr_r.user_id = prr_m.id
WHERE recall_create_date BETWEEN trial_start_date AND trial_end_date
);
Выходными данными является общее количество:
@ gmb Я не могу преодолеть эту ошибку агрегатной функции. Я пробовал это, поскольку я не могу запустить ваш код, как он есть:
SELECT prr_u.id,
prr_m.created_at + interval '1 day' * prr_m.trial_days AS trial_end_date,
COUNT(*) AS recalls_count
FROM my_db.productionrr_users AS prr_u
INNER JOIN my_db.productionrr_memberships AS prr_m
ON prr_u.id = prr_m.id
INNER JOIN my_db.c4productionrr_recalls AS cprr_r
ON cprr_r.user_id = prr_m.id
WHERE cprr_r.created_at BETWEEN prr_m.created_at AND trial_end_date
GROUP BY prr_u.id;
, который выдает следующую совокупную ошибку:
`