您好我正在尝试创建一个查询,显示老年人公民考试的结果。我无法将结果显示为我想要的结果。
这是我的问题:
select sch.name,
u.SCS_GI_CIVICS_TEST
from students s
left join u_students u
on s.dcid = u.studentsdcid
left join schools sch
on s.schoolid = sch.school_number
WHERE s.enroll_status = '0 '
and s.grade_level ='12'
and sch.ADDRESS is not null
and (u.scs_gi_civics_test like '%SpEd-Exempted%'
or u.scs_gi_civics_test IS NULL
or u.scs_gi_civics_test like '%Passed%'
or u.scs_gi_civics_test like '%Failed%'
or u.scs_gi_civics_test like '%Has Not Taken%');
学校专栏很好。在我的公民测试结果中,有NULL,与未拍摄相同。我想合并它们并计算它们。我需要一个计数和百分比为NULL + HAS NOT Taken,Passed,Failed和Sped-Exempted。我知道我需要做一个支点或一个案例来完成这个,但是,我很遗憾如何使用所涉及的空值。 我需要以下列: 学校,SpEd豁免计数,SpEd豁免百分比,通过计数,通过百分比,失败计数和失败百分比,并且没有采取计数并且没有采取百分比(这包括未采取+空值) ***每个的百分比将来自所有这些值的总和。
非常感谢任何帮助!
答案 0 :(得分:0)
我希望下面会给你答案。在下面的查询中,带有case语句的第一个选择将为所有通过/失败/未被采用/ SpEd-Exempted的学校的学生提供。 上部选择将计算所有学生(tot_students),并计算通过/失败的人并给出结果。
计数(通过)* 100 /计数(dcid)将给出从学校通过的人数百分比。
此查询按学校分组。
SELECT sch.name,
COUNT(sped),
(COUNT(sped)*100/COUNT(dcid)) perc_sped,
COUNT(pass),
(COUNT(pass)*100/COUNT(dcid)) perc_pass,
COUNT(fail),
COUNT(fail)*100/COUNT(dcid) perc_fail,
COUNT(not_taken) not_taken,
COUNT(not_taken)*100/COUNT(dcid) perc_not_taken,
COUNT(dcid) tot_students
FROM
(SELECT s.dcid,
sch.name,
CASE
WHEN u.scs_gi_civics_test LIKE '%SpEd-Exempted%'
THEN 1
ELSE NULL
END sped ,
CASE
WHEN u.scs_gi_civics_test LIKE '%Passed%'
THEN 1
ELSE NULL
END pass ,
CASE
WHEN u.scs_gi_civics_test LIKE '%Failed%'
THEN 1
ELSE NULL
END fail ,
CASE
WHEN u.scs_gi_civics_test LIKE '%Has Not Taken%'
THEN 1
ELSE NULL
END not_taken
FROM
FROM students s
LEFT JOIN u_students u
ON s.dcid = u.studentsdcid
LEFT JOIN schools sch
ON s.schoolid = sch.school_number
WHERE s.enroll_status = '0 '
AND s.grade_level ='12'
AND sch.ADDRESS IS NOT NULL
)
GROUP BY sch.name