У меня есть приложение для перевозки в кабине
У каждого водителя есть Поездка, и для каждой поездки может быть несколько клиентов (объединение в кабины), которые оставляют свои отзывы.
Теперь я хочу получить водители тех водителей, которые получили более 10 пятизвездочных оценок (5 *) и минимум 20%. Пятизвездочные оценки из их общего рейтинга, полученного от их клиентов.
Допустим, водитель получил всего 40 За последние 30 дней, из которых 16 являются 5-звездочными рейтингами, этот драйвер соответствует критериям не менее 10 5 * звездных оценок и более 20% 5 * оценок. Этот идентификатор драйвера должен быть выбран.
SELECT TR.[DriverId]
,100.0 * AVG(CASE
WHEN FE.[Rating] = 5
THEN 1.0
ELSE 0
END) AS Percentage
FROM tblFeedback FE
LEFT OUTER JOIN tblTrip TR ON FE.TripId = TR.TripId
WHERE FE.DATE >= GETDATE() - 30
AND FE.Rating = 5
GROUP BY DriverId
HAVING COUNT(CASE
WHEN FE.[Rating] = 5
THEN DriverId
END) >= 10
AND 100 * AVG(CASE
WHEN FE.[Rating] = 5
THEN 1.0
ELSE 0
END) > 20
Приведенный выше запрос показывает процент в 100 000 для всех драйверов, чьи идентификаторы получены, даже те драйверы, у которых общий процент составляет 18%, также выбираются и их процент составляет отображается как 100%.
Этот запрос полностью испортил мой отчет