мне нужна помощь оператора выбора в SQL Server/T-SQLНовая помощь с SQL Server выберите заявление
Моя таблица выглядит следующим образом:
Id (int)
QuestionId (int)
GenreId (int)
QuestionScore (int)
Я хочу, чтобы выбрать случайное N строки из эту таблицу, чтобы максимальное число одного и того же GenreId в результирующем наборе было меньше X для всех GenreId-s, кроме одного. Для этого GenreId мне нужно количество строк, чтобы GenreId был равен Y.
UPDATE
Я сделал этот запрос из предложений ниже, работает точно так же, как я хотел (для одного жанра, за исключением, но не тот, не проблема, пусть это будет так, плохо есть 2 запросов)
select top @N * from
(select Id,GenreId,Rank() over (Partition BY GenreId order by newId()) as Rank,QuestionScore from Questions) t
where t.Rank <= @X
order by newId()
Теперь мне нужно выбрать строки, чтобы средний QuestionScore находился между 1.7 и 2.3
как я могу это сделать? Мне нужны все столбцы, возвращенные в наборе результатов.
заранее спасибо :)
Ваш запрос вообще кажется невозможным. Что, если N равно 100, X равно 5, а всего 2 жанра? Какие предположения вы делаете? И насколько случайным это должно быть? Это более важно, чтобы получить много разных жанров? Это нормально, если один жанр полностью не представлен в результатах. –
Это поможет узнать версию SQL Server, которую вы используете. –
Im using SQL Server 2005. Максимальное значение N равно 33, а количество жанров - ~ 50. Хорошо, если некоторые жанры не будут включены в результат. –