Функция RAND () на сервере sql - PullRequest
0 голосов
/ 10 июля 2020

Может ли кто-нибудь помочь мне понять, как использовать функцию RAND () на SQL сервере?

У меня есть сценарий, в котором я хочу получать случайные продукты из таблицы продуктов в случайном порядке на основе

Кроме того, здесь я хочу отдать предпочтение продуктам с более высоким рейтингом, а не продуктам с более низким рейтингом, которые должны быть наверху. прийти вверх по порядку; иногда продукты с более низким рейтингом должны быть наверху.

На данный момент я использовал NEWID(), который дает мне случайный порядок каждый раз, но не учитывает ранжирование продуктов.

Столбцы таблицы: ProductID, ProductName, Rating

SELECT ROW_NUMBER() OVER(ORDER BY NEWID() ASC) AS ProductOrder, ProductID, Rating
FROM dbo.VIHC_Products
ORDER BY ProductOrder

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

1 Ответ

0 голосов
/ 10 июля 2020

Просто умножьте номер строки на рейтинг и упорядочьте по убыванию:

SELECT Rating * ROW_NUMBER() OVER(ORDER BY NEWID() ASC) AS ProductOrder, ProductID, Rating
FROM dbo.VIHC_Products
ORDER BY ProductOrder DESC
...