SQL Server用于随机分配调查的存储过程

问题描述

| 我必须执行以下操作:从现有表中选择教师,将他们随机分配给4个调查中的1个,然后将教师和分配的调查输入到现有表中(teacherID,surveyID),最后随机选择5个学生并记录下来到另一个现有表(studentID和TeacherID)中。 作为单独的任务,这将很容易...更容易。 在尝试找出最佳流程之前,还没有这样做。创建一个临时表以首先存储教师,然后以某种方式循环(我从未在存储过程中完成此操作)以随机分配调查,然后插入调查表中?创建另一个临时表以随机选择教师的学生,然后将其分配给调查学生表吗? 为了回答下面的rsbarro问题:有三个表。一个记录调查的名称,并具有一个自动递增的id字段。另一个具有教师ID和分配的SurveyID。最后一个具有studentID,TeacherID,其余列用于记录响应(Q1,Q2,Q3等)。调查ID未记录在师生表格中。该Web应用程序以前是通过从Excel文件或Access数据库导入数据来完成的,该数据库使用宏来分配调查和学生。 谢谢, 詹姆士     

解决方法

假定至少SQL Server 2005:
/* Assign 1 random survey to each teacher */
INSERT INTO TeacherSurvey
    (teacherID,surveyID)
    SELECT teacherID,(SELECT TOP 1 surveyID FROM Survey ORDER BY NEWID())
        FROM Teacher

/* Randomly choose 5 students for each teacher */
INSERT INTO TeacherStudentSurvey
    (teacherID,studentID)
    SELECT teacherID,studentID
        FROM (SELECT teacherID,studentID,ROW_NUMBER() OVER(PARTITION BY teacherID ORDER BY NEWID()) AS RowNum
                  FROM TeacherStudent) t
        WHERE t.RowNum <= 5
    ,我不太了解学生想要的东西,因此这里有一些代码处理了第一部分。将调查问卷随机分配给老师。也许您可以使用它来弄清楚如何解决剩下的问题。
-- Table with instructors
declare @Teacher table(TeacherID int,Name varchar(15))
insert into @Teacher values (1,\'Instructor 1\')
insert into @Teacher values (2,\'Instructor 2\')
insert into @Teacher values (3,\'Instructor 3\')
insert into @Teacher values (4,\'Instructor 4\')
insert into @Teacher values (5,\'Instructor 5\')

-- Table with the four surveys
declare @Survey table(SurveyID int,SurveyName varchar(15))
insert into @Survey values (1,\'Survey 1\')
insert into @Survey values (2,\'Survey 2\')
insert into @Survey values (3,\'Survey 3\')
insert into @Survey values (4,\'Survey 4\')

-- Target table for Teacher and randomly selected Survey
declare @TeacherSurvey table(TeacherID int,SurveyID int)

insert into @TeacherSurvey (TeacherID,SurveyID)
select 
  T.TeacherID,(select top 1 SurveyID
   from @Survey 
   order by newid()) as SurveyID
from @Teacher as T
@TeacherSurvey中的行
TeacherID   SurveyID
----------- -----------
1           2
2           2
3           4
4           4
5           3
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...