Порядок по среднему рейтингу, а также по общему количеству отзывов - PullRequest
0 голосов
/ 08 апреля 2020

Так что в настоящее время у меня есть запрос к базе данных, который заказывает мои продукты, которые возвращаются на основе рейтинга отзыва.

CASE WHEN p.ApprovedRatingSum > 0 AND p.ApprovedTotalReviews > 0 THEN ((p.ApprovedRatingSum*100)/ p.ApprovedTotalReviews)/5 END DESC

Я хотел бы еще go и заказать продукты, которые имеют то же значение рейтинга в порядке их обзора также. Таким образом, для продуктов, имеющих рейтинг 5.0, наибольшее количество будет возвращено первым до самого низкого. Что-то вроде - Стул, рейтинг 5.0 (10 отзывов) - таблица, рейтинг 5.0 (9 отзывов) - диван, рейтинг 5.0 (7 отзывов) И так далее для каждого значения рейтинга

Я не силен в базах данных. Я пробовал

CASE WHEN p.ApprovedRatingSum > 0 AND p.ApprovedTotalReviews > 0 THEN ((p.ApprovedRatingSum*100)/ p.ApprovedTotalReviews)/5 GROUP BY p.ApprovedTotalReviews DESC END DESC

и

CASE WHEN p.ApprovedRatingSum > 0 AND p.ApprovedTotalReviews > 0 THEN ((p.ApprovedRatingSum*100)/ p.ApprovedTotalReviews)/5 ORDER BY p.ApprovedTotalReviews DESC END DESC

Но они не работают, чувствую, что есть какая-то функция базы данных, которую мне нужно использовать. Есть идеи?

1 Ответ

1 голос
/ 08 апреля 2020

Если я правильно следил за вами, вам просто нужно добавить в запрос еще один критерий сортировки:

ORDER BY
    CASE WHEN p.ApprovedRatingSum > 0 AND p.ApprovedTotalReviews > 0 
        THEN p.ApprovedRatingSum / p.ApprovedTotalReviews END DESC,
    ApprovedTotalReviews DESC  -- second sort criteria

Обратите внимание, что вам не требуется логика умножения / деления c в первом критерии сортировки: такая линейная арифметическая операция c не подходит для сортировки.

...