J'ai besoin d'aide avec instruction select dans SQL Server/T-SQLNouvelle aide avec instruction select SQL Server
Ma table ressemble à ceci:
Id (int)
QuestionId (int)
GenreId (int)
QuestionScore (int)
Je veux choisir au hasard N lignes de cette table afin que le nombre maximum de même GenreId dans le jeu de résultats soit inférieur à X pour tous les GenreId-s sauf un. Pour ce GenreId, j'ai besoin que le nombre de lignes avec ce GenreId soit égal à Y.
MISE À JOUR
J'ai fait cette requête de suggestions ci-dessous, il fonctionne exactement comme je voulais (sauf pour un genre, mais c'est pas de problème, que ce soit de cette façon, malade ont 2 requêtes)
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()
maintenant je dois sélectionner des lignes de sorte que QuestionScore moyen est entre 1.7 ET 2.3
comment puis-je faire cela? J'ai besoin de toutes les colonnes retournées dans le jeu de résultats.
merci à l'avance :)
Votre requête semble généralement impossible. Et si N est 100, X est 5 et il n'y a que 2 genres? Quelles hypothèses faites-vous? Et comment cela devrait-il être aléatoire? Est-il plus important d'avoir beaucoup de genres différents? Est-ce OK si un genre est complètement non représenté dans les résultats. –
Il serait utile de connaître la version de SQL Server que vous utilisez. –
Im en utilisant SQL Server 2005. La valeur maximale de N est de 33 et le nombre de Genres est ~ 50 Il est correct si certains genres ne seront pas inclus dans le résultat. –