请建议如何在Postgres 13.8中实现以下要求,同时返回原始数据的所有行:
CREATE TABLE exam_assessment (
subject_name varchar(50),
chapter_name varchar(50),
chapter_status varchar(50),
student_id varchar(50),
marked_status varchar(50));
INSERT INTO exam_assessment
(subject_name,chapter_name,chapter_status,student_id,marked_status) VALUES
('Science','Chapter1','COMPLETED','6998104_1','Marked as Complete'),
('Science','Chapter2','COMPLETED','6998104_1','Completed'),
('Science','Chapter3','IN_PROGRESS','6998104_1','IN_PROGRESS'),
('Science','Chapter1','COMPLETED','6998103_1','Marked as Complete'),
('Science','Chapter2','COMPLETED','6998103_1','Marked as Complete'),
('Science','Chapter3','COMPLETED','6998103_1','Marked as Complete'),
('Science','Chapter1','COMPLETED','6998102_1','Completed'),
('Science','Chapter2','COMPLETED','6998102_1','Marked as Complete'),
('Science','Chapter3','COMPLETED','6998102_1','Marked as Complete');
Data看起来像这样:
subject_name | chapter_name | chapter_status | student_id | marked_status |
---|---|---|---|---|
Science | Chapter1 | COMPLETED | 6998104_1 | Marked as Complete |
Science | Chapter2 | COMPLETED | 6998104_1 | Completed |
Science | Chapter3 | IN_PROGRESS | 6998104_1 | IN_PROGRESS |
Science | Chapter1 | COMPLETED | 6998103_1 | Marked as Complete |
Science | Chapter2 | COMPLETED | 6998103_1 | Marked as Complete |
Science | Chapter3 | COMPLETED | 6998103_1 | Marked as Complete |
Science | Chapter1 | COMPLETED | 6998102_1 | Completed |
Science | Chapter2 | COMPLETED | 6998102_1 | Marked as Complete |
Science | Chapter3 | COMPLETED | 6998102_1 | Marked as Complete |
objective是为了获得学生的整体科目状态:
- 如果任一章节为
IN_PROGRESS
,则表示主体状态为IN PROGRESS
. - 如果所有章节都是
Marked as Completed
,则主题状态应该是Marked as Completed
. - 如果所有章节都是
Marked as Completed
和Completed
的组合,则意味着主体状态应该是Completed
.
Examples:
- 学生
6998
有3章中的IN_PROGRESS
_1marked_status
章,IN_PROGRESS
-SUBJECT_STATUS
应该显示为IN_PROGRESS
. - 学生
6998
在所有章节中都有SUBJECT_STATUS
_1marked_status
,因为Marked as Complete
-SUBJECT_STATUS
应该显示Marked as Complete
. - 学生
6998
的3章COMPLETED
_1chapter_status
都是COMPLETED
,但有些marked_status
是Marked as Complete
,有些Completed
-SUBJECT_STATUS
栏应该是Completed
.
Expected result:个
subject_name | chapter_name | chapter_status | student_id | marked_status | SUBJECT_STATUS |
---|---|---|---|---|---|
Science | Chapter1 | COMPLETED | 6998104_1 | Marked as Complete | IN_PROGRESS |
Science | Chapter2 | COMPLETED | 6998104_1 | Completed | IN_PROGRESS |
Science | Chapter3 | IN_PROGRESS | 6998104_1 | IN_PROGRESS | IN_PROGRESS |
Science | Chapter1 | COMPLETED | 6998103_1 | Marked as Complete | Marked as Complete |
Science | Chapter2 | COMPLETED | 6998103_1 | Marked as Complete | Marked as Complete |
Science | Chapter3 | COMPLETED | 6998103_1 | Marked as Complete | Marked as Complete |
Science | Chapter1 | COMPLETED | 6998102_1 | Completed | Completed |
Science | Chapter2 | COMPLETED | 6998102_1 | Marked as Complete | Completed |
Science | Chapter3 | COMPLETED | 6998102_1 | Marked as Complete | Completed |