Оптимизация расчёта среднего значения в TypeOrm (SQL)

В данном отрывке я считаю среднюю цену из трех значений ближайших по mileage. Когда я использую subQuery в from, среднее значение высчитывается правильно, но если я просто выберу reports.price мне возвращает эти три ближайшие значения столько раз, сколько рядов в таблице. Есть ли возможность избавиться от лишних дубликатов, либо вообще каким-то образом проходить по subQuery только один раз?

return this.repo
      .createQueryBuilder()
      .select('AVG(reports.price)', 'price')
      .from(
        (subQuery) =>
          subQuery
            .select('*')
            .from(Report, 'reports')
            .where('make = :make', { make })
            .andWhere('model = :model', { model })
            .andWhere('lng - :lng BETWEEN -5 AND 5', { lng })
            .andWhere('lat - :lat BETWEEN -5 AND 5', { lat })
            .andWhere('year - :year BETWEEN -3 AND 3', { year })
            .andWhere('approved IS TRUE')
            .orderBy('ABS(mileage - :mileage)', 'ASC')
            .setParameters({ mileage })
            .limit(3),
        'reports',
      )
      .getRawMany();

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