/T-SQL새로운 도움을 내가 SQL Server의 SELECT 문에 도움이 필요
내 표는 다음과 같습니다
내가 N 행에서 무작위로 선택합니다Id (int)
QuestionId (int)
GenreId (int)
QuestionScore (int)
이 테이블은 결과 집합에서 동일한 GenreId의 최대 수가 X보다 작고 모든 GenreId-s가 하나가되도록합니다. 해당 GenreId의 경우 해당 GenreId와 행 수가 Y이되어야합니다.
나는 아래의 제안에서이 쿼리를 만들어
UPDATE, 그것은 내가 원하는대로 정확하게 작동
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 사이가되도록 행을 선택해야합니다.
어떻게하면됩니까? 결과 집합에서 반환 된 모든 열이 필요합니다. SQL 서버 2005 +, 사용하기 위해 미리 :)
일반적으로 귀하의 요청은 불가능한 것 같습니다. N이 100이고 X가 5이고 장르가 두 개라면? 어떤 가정을하고 있습니까? 그리고 이것이 얼마나 무작위 적인가? 다양한 장르를 얻는 것이 더 중요합니까? 결과에 한 장르가 완전히 나타나지 않으면 괜찮습니까? –
사용중인 SQL Server의 버전을 확인하는 데 도움이됩니다. –
SQL Server 2005를 사용하고 있습니다. N의 최대 값은 33이고 장르의 수는 ~ 50입니다. 일부 장르가 결과에 포함되지 않으면 확인됩니다. –