2016-11-10 9 views
-2

У меня есть 2 таблицы, как описано ниже:Как выбрать данные из нескольких таблиц SQL?

Сорта

student id, 
exem1, 
exam2, 
exam3 

Names

student id, 
names 

Я хочу, чтобы отобразить имена студентов, их среднее значение по 3 экзаменов , и класс письма. Степень письма рассчитывается следующим образом:

90+ is an “A”, 80 - <90 will be a “B” и так далее. Как я должен это делать.?

ответ

1
> SELECT n.student_names, ((g.exam1+g.exam2+g.exam3)/3) AS 'AVERAGE_RESULT', (CASE 
       WHEN ((g.exam1+g.exam2+g.exam3)/3) =90 
       THEN 'A' 
       WHEN (((g.exam1+g.exam2+g.exam3)/3) BETWEEN 80 AND 89) 
       THEN 'B' 
       WHEN (((g.exam1+g.exam2+g.exam3)/3) BETWEEN 70 AND 79) 
       THEN 'C' 
       ELSE 'D') END AS 'Student_grades', 
FROM names n, grades g 
WHERE n.students_id = g.students_id; 

Использование между ними, чтобы включать в себя диапазоны

1
SELECT n.NAME AS "Name", CASE WHEN ((g.exam1+g.exam2+g.exam3)/3) = 90 then 'A' 
WHEN ((g.exam1+g.exam2+g.exam3)/3) < 90 then 'B' 
ELSE 'C' 
END AS "Grade" 
FROM NAMES AS n INNER JOIN GRADES AS g 
ON g.student_id = n.student_id 

Изменить диапазоны, как вы хотите.

+0

шахта была очень похожа-s.sql ("" "выберите n._2, (((сумма (g._2)) + (сумма (g._3)) + (sum (g._4)))/3) как среднее, случай, когда ((сумма (g._2)) + (сумма (g._3)) + (сумма (g._4)))/3) <90, тогда «B» else «C» заканчивается как класс от имен n внутренних классов присоединения g по n._1 = g._1 группе (n._2) «" ") – Mike