我知道这是一个专门的问题,因为只有一小部分成员甚至会听说过PowerSchool,但很难找到帮助。给定开始日期和结束日期,我需要运行一个查询,该查询将返回在该时间段内注册到学区的所有学生的学生ID。如果我可以将它与'WITH AS'一起使用,我可以将其添加到出勤查询'Where'子句如下。这是我到目前为止所做的,但我不知道如何检查它的准确性:
SELECT * FROM Students
WHERE ID IN (
SELECT studentid FROM ps_adaadm_defaults_all
WHERE schoolid IN ('16', '28', '40')
AND calendardate >= '1-May-15'
AND calendardate <= '31-May-15'
GROUP BY studentid)
ORDER BY LastFirst;
“ps_adaadm_defaults_all”是主要针对ADM的PowerSchool视图,因此我的假设是,如果学生ID存在于ps_adaadm_defaults_all中且日期介于两个给定日期之间,则该学生至少在当天注册,无论出勤率如何, ?任何可以伸出援手的PowerSchool用户?
我通过此查询获得结果但是当我尝试使用PowerSchool网站验证准确性时,结果并不完全相同。我使用该网站的意思是我以区管理员身份登录,将学期设置为15-16岁,学校设置为所需学校,并选择姓氏以“A”开头的学生。然后,我开始将它提供的列表与姓氏以“A”开头的查询结果中的学生进行比较。我注意到,虽然我的查询中有一些名称没有在网站上显示,但我认为这是因为他们的退出日期在当前的学习之前。那些学生显然当时就读,但他们的名字不属于PowerSchool成绩。我在想,因为他们不再登记了?有什么方法可以测试这个查询的准确性吗?我是否走在正确的轨道上?提前谢谢。
答案 0 :(得分:0)
当您从管理员网站搜索PowerSchool时,它只返回活跃的学生,无论您选择哪个术语。换句话说,我不能从术语列表中选择“2000-2001”,并且神奇地让一切都反映了这个术语。
我可以想到一些可能影响您搜索的事情:
验证查询结果的更好方法是使用系统报告下的 ADA / ADM部分。将您的查询减少到一个日期,然后在同一天运行 ADA / ADM按日期报告。
答案 1 :(得分:0)
听起来我有两个问题:
我会为您的查询使用ps_enrollment视图。它包括学生ID,学校ID,开始和结束日期,因此可用于查找在某个时间点注册的所有学生。
学生在整个指定时间段内注册
SELECT UNIQUE pe.StudentID
FROM ps_enrollment pe
WHERE pe.schoolid IN ('16', '28', '40')
AND pe.EntryDate <= '05/01/2015'
AND pe.ExitDate >= '05/30/2015'
学生在指定时间段内随时注册
SELECT UNIQUE pe.StudentID
FROM ps_enrollment pe
WHERE pe.schoolid IN ('16', '28', '40')
AND (
(pe.EntryDate <= '05/01/2015' AND pe.ExitDate >= '05/01/2015')
OR (pe.EntryDate <= '05/30/2015' AND pe.ExitDate >= '05/30/2015')
OR (pe.EntryDate >= '05/01/2015' AND pe.ExitDate <= '05/30/2015')
)
在上面的示例中,AND内部的三个条件检查在第一个日期之前或之后开始或在第一个日期之后开始的注册,然后是第二个日期,最后检查两个日期之间发生的任何注册
注意:我使用UNIQUE而不是GROUP BY。我认为它适合你正在做的事情。
在管理员端检查这些号码的最简单方法是使用系统报告 - &gt;会员资格和注册 - &gt;按日期登记摘要。这是一种在任何时间点检查注册学生数字的简便方法,并且还会为您提供这些特定学生的列表。它包括不活跃的学生。
您可以通过在查询中输入单个日期而不是使用日期范围,并根据按日期的注册摘要检查该日期来仔细检查它是否正常工作。当我为我们的区域执行此操作时,我的查询提取了7个额外记录(超过7000个),但经过调查,所有这些都是由于错误的重新注册记录,因此它似乎正常工作。