我需要生成SQL数据库的帮助。计算研究区域的百分比
我有两个表:
- 学生
- student_Subjects
学生表:
+------------+---------+-----------------+ | id | name |area_of_study_id | +------------+---------+-----------------+ | 1 | AAA | 1 | | 2 | BBB | 2 | | 3 | CCC | 1 | | 4 | DDD | 3 | | 5 | EEE | 4 | | 6 | FFF | 1 | | 7 | GGG | 2 | | 8 | III | 1 | +------------+---------+-----------------+
student_subjects表:
+------------+-------------------+------------------+ | id | student_id | subject_id | | 1 | 1 | 1 | | 2 | 2 | 1 | | 3 | 1 | 3 | | 4 | 1 | 2 | | 5 | 3 | 1 | | 6 | 6 | 1 | | 7 | 7 | 3 | | 8 | 4 | 6 | +------------+-------------------+------------------+
我需要找出基于students area of study
一个subject's area of study
。从学生表上可以看到,学生可以自由选择area of study
。有时,他们可以选择与其学习领域无关的科目。因此,在这种情况下,我们需要根据已采纳主题的student percentages
来计算area of study
的subject
。
的部分输出:
+------------+-------------------+-----------------------------------+ |Total_students | subject_id |area_of_study_id | percentage | +------------+-------------------+-----------------+-----------------+ | 3 | 1 | 1 | 75 | | 1 | 1 | 2 | 25 | | 1 | 3 | 1 | 50 | | 1 | 3 | 2 | 50 | | 1 | 2 | 1 | 100 | | 1 | 6 | 3 | 100 | +------------+-------------------+-----------------+-----------------+
从上面的部分输出中,我们可以看到,3名学生选择的受试者(即subject_id = 1)具有研究1
的面积和一个学生是来自不同区研究(即2)。所以,我们可以说subject_id =1
是从area of study = 1
。
如果百分比50%为一个主题。我们可以选择两个之间的任何学习领域,不管是哪一个。
预期输出:
+------------+-------------------+-----------------------------------+ |Total_students | subject_id |area_of_study_id | percentage | +------------+-------------------+-----------------+-----------------+ | 3 | 1 | 1 | 75 | | 1 | 3 | 1 | 50 | | 1 | 2 | 1 | 100 | | 1 | 6 | 3 | 100 | +------------+-------------------+-----------------+-----------------+
在先进的感谢。
能详细百分比如何为局部的,最终的结果计算解释一下吗? – peterm
只计算一次的百分比。在最后我只是过滤部分。部分地,你可以看到4个学生选择subject_id = 1。但是,一个来自不同的学习领域。所以百分比计算:100 * 3/4 = 75和单身学生; 100 x 1/4 = 25。 – Anam
@Anam:我认为如果您分别将主题名称和研究区域名称,而不是研究ID的主题ID和区域,将会更有帮助。由于数字的相似性,这非常令人困惑。 – Edper