Допустим, у нас есть таблицы Таблицы учеников, предметов и оценок.
Структура и данные, как показано ниже
CREATE MULTISET TABLE tmp_work_db.student ,FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT,
DEFAULT MERGEBLOCKRATIO
(
student_id integer,
student_name varchar(50)
)
PRIMARY INDEX ( student_id );
insert into tmp_work_db.student
values(1,'Tim');
insert into tmp_work_db.student
values(2,'John');
insert into tmp_work_db.student
values(3,'Roy');
CREATE MULTISET TABLE tmp_work_db.subject ,FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT,
DEFAULT MERGEBLOCKRATIO
(
subject_id integer,
subject_name varchar(50)
)
PRIMARY INDEX ( subject_id );
insert into tmp_work_db.subject
values(1,'English');
insert into tmp_work_db.subject
values(2,'Maths');
insert into tmp_work_db.subject
values(3,'Hindi');
CREATE MULTISET TABLE tmp_work_db.marks ,FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT,
DEFAULT MERGEBLOCKRATIO
(
student_id integer,
subject_id integer,
marks integer
)
PRIMARY INDEX ( student_id,subject_id );
insert into tmp_work_db.marks
values(1,1,50);
insert into tmp_work_db.marks
values(1,2,100);
insert into tmp_work_db.marks
values(1,3,40);
insert into tmp_work_db.marks
values(2,1,50);
insert into tmp_work_db.marks
values(2,2,30);
Нам нужно написать запрос, который сгенерирует отчет со студентами, которые потерпели неудачу по определенному предмету и которые не появились по предмету.
Я попробовал ниже запрос, чтобы получить студентов, которые не по определенным предметам
sel student_name,subject_name,marks from tmp_work_db.student st
inner join
(
sel student_id,subject_id,marks from tmp_work_db.marks where marks < 35
) mrk
on st.student_id=mrk.student_id
inner join tmp_work_db.subject sub
on sub.subject_id=mrk.subject_id;
Я не могу получить студентов, которые не появились по определенным предметам.