比较 SQL(或 AWS QuickSight)中的字符差异

Comparing differences in characters in SQL (or AWS QuickSight)

我们正在使用 Postgres,在 student table 上,我们有字母等级 [A、B、C、D、F] 列。我们有两列分别是上一年级和当前年级。我正在尝试找到一种方法来 运行 报告每条记录的成绩变化情况。所以本质上,我想要一个 current_grade-previous_grade 的字段,但由于值是文本,我无法轻松进行比较。我希望 AWS QuickSight 中的 parseInt 会解析成绩的值,但 the documentation says it ignores non-numerical values. Since AWS QuickSight doesn't seem to solve this problem, how would I do this in my query in SQL when I don't have write access and can't create generated columns 会解析这个值吗?我希望得到一些简单的东西,比如:

SELECT id, report_card->'grade' as current_grade, report_card->'previous_grade' as old_grade, old_grade-current_grade FROM Students;

Quicksight 似乎支持 locate,您可以根据自己的优势进行调整。就好像您要为 current_grade 和 previous_grade 列

中的成绩分配数字
locate('ABCDEF', current_grade) - locate('ABCDEF', previous_grade)

如果这不起作用,他们还有 ifelse,您可以按照这些行进行修改

ifelse(current_grade="A", 1, current_grade="B", 2, ......,current_grade="F", 6) - 
ifelse(previous_grade="A", 1, previous_grade="B", 2, ......,previous_grade="F", 6)