Как добавить условие SUM в JOIN?
Имеются 3 сущности: ticket, metric и tag. Билеты, их теги и метрики. Есть следующий запрос:
Tag.select(
"tags.id as tag_id,
COUNT(DISTINCT low.ticket_id) AS low,
COUNT(DISTINCT high.ticket_id) AS high"
).joins(
'LEFT JOIN metrics ON (
tags_id = metrics.tag_id AND
metrics.day = "07.10.2020" AND
metrics.action = 4
)
LEFT JOIN metrics AS low ON (
metrics.id = low.id AND
low.priority_id = 1
)
LEFT JOIN metrics AS high ON (
metrics.id = low.id AND
high.priority_id = 2
)'
).group('tags.name, tags.id')
Он выводит количество билетов для каждого тега c приоритетами low и high. Например:
[
{tag_id: 1, low: 12, high: 7},
{tag_id: 2, low: 25, high: 5}
]
Возможно ли этот запрос изменить так, чтобы перед выбором билета сначала считалась сумма полей metrics.duration с metrics.action равными 1, 2 и 3 и выполнялось условие, что эта сумма больше 100?
То есть у нас есть билет и несколько его метрик. Мы складываем все duration в метриках с action равным 1, 2 и 3 и потом сравниваем эту сумму с 100. Если сумма больше 100, то такой билет засчитывается.