Конвертировать оценки учащихся в соответствующие оценки - PullRequest
0 голосов
/ 30 июня 2019

Требуется запрос для печати ID и letter_grade, связанных с max_grade студента для каждой записи в таблице Student.Выходные данные должны быть упорядочены по возрастанию идентификатора и должны иметь следующий формат:

Student 1 has grade: A

Student 2 has grade: C

Student 3 has grade: B

Student 4 has grade: F

But I'm not sure how to pass "id" value into the then clause.

Below is the code I have implemented :

select CASE 
WHEN max_grade < 20 then "Student id has grade: F"
WHEN (max_grade >=20 AND max_grade <40) then "Student id has grade: D"
WHEN (max_grade >=40 AND max_grade <60) then "Student id has grade: C"
WHEN (max_grade >=60 AND max_grade <80) then "Student id has grade: B"
ELSE "Student id has grade: A"
END AS Grade_details from students order by id;

Ответы [ 3 ]

2 голосов
/ 30 июня 2019

Вам нужно объединить идентификатор и оценку буквы внутри фразы:

'Student ? has grade: ?' 

с этим:

select 
 'Student ' || id ' has grade: ' || CASE 
    WHEN max_grade < 20 then 'F' 
    WHEN max_grade < 40 then 'D'
    WHEN max_grade < 60 then 'C'
    WHEN max_grade < 80 then 'B'
    ELSE 'A'
  END AS Grade_details 
FROM students 
ORDER BY id;
1 голос
/ 30 июня 2019

Вы можете использовать условие case в sql запросе для преобразования оценки в оценку

CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;

обратитесь по этой ссылке , чтобы узнать об этом случае.

SELECT studentID, CASE statement FROM table name ORDER BY studentID

используя оператор по порядку, вы получаете выходные данные в порядке возрастания или убывания

0 голосов
/ 30 июня 2019

Вы можете напрямую использовать case логику:

select (case when max_grade < 20 then 'F'
             when max_grade < 40 then 'D'
             when max_grade < 60 then 'C'
             when max_grade < 80 then 'B'
             else 'A'
        end) as letter_grade

Обратите внимание, что выражение case возвращает первое совпадающее выражение, поэтому требуется только верхняя граница. Эта версия предполагает, что max_grade не является null.

Также обратите внимание, что эта версия присваивает буквенную оценку учащимся, чей максимум равен 80.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...