Как добавить условие 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, то такой билет засчитывается.


Ответы (0 шт):