SQL Server:从多个表计算百分比

时间:2018-10-19 20:17:11

标签: sql sql-server-2014

我正在创建一个解决方案,该解决方案将按年级计算特定bmi身份的学生百分比。我做了一个表student_info,用于存储学生,还有多个表g1,g2,g3,g4,g5,g6和kinder,用于存储学生的bmi统计信息。我尝试过

SELECT 
    si.grade AS 'Grade Level', g4.fstat AS 'Status',
    (SELECT COUNT(si.lrn) * 100.0 / (SELECT COUNT(*) FROM student_info)) AS 'Total'
FROM 
    student_info AS si, g4
GROUP BY
    g4.fstat, si.grade

我只是从g4表中获取结果,但是我想将所有7个表连接起来以对它们全部进行计算。感谢帮助

2 个答案:

答案 0 :(得分:0)

您只会得到g4表的结果,因为这是您选择的唯一表。假设您在每个年级都有相同的表结构,并且没有一个以上年级的学生,那么我首先将他们结合在一起,就像这样:

Select 'K' as grade, * from kinder
union all
Select '1' as grade, * from g1
union all
Select '2' as grade, * from g2

....等其他表格。

然后使用该联合的结果(作为表或临时表或CTE),而不仅仅是查询中的表g4

答案 1 :(得分:0)

您想联接所有7个表,但是联接在哪里?您正在按g4.fstat和si.grade进行分组,但是我看不到任何其他代码可以从其他表中提取任何内容。如果要查看结果,需要将所有表连接到它们的公共字段,并将这些连接的字段添加到选择的表中。