首页 > 解决方案 > SQL Server:从多个表中计算百分比

问题描述

我正在创建一个解决方案,该解决方案将按年级计算处于特定 bmi 状态的学生的百分比。我已经创建了一个存储学生的表 student_info,以及存储学生 bmi 统计信息的多个表 g1、g2、g3、g4、g5、g6 和 kinder。我努力了

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 个表来计算它们。感谢帮助

标签: sqlsql-server-2014

解决方案


您只能获得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您拥有的查询中的表。


推荐阅读