2015-09-23 7 views
-1

У меня есть таблица курсов, в которой хранятся курсы студентов. Каждая строка таблицы является одним курсом. Столбцов:Как получить специальный набор данных из Oracle

student id, course, term 

Я хочу, чтобы увидеть, сколько студентов курса 1 и (курс 2 или 3 курса) и курс 4 в перспективе х.

Как я могу написать инструкцию SQL для выполнения запроса?

+0

Я думаю, что вы приземлились в главе о 'GROUP BY' в вашем курсе ? – GolezTrol

+0

Я не могу решить, должен ли я ответить на этот вопрос, надеясь, что OP впоследствии завершит выпуск экзамена или откажется ответить на том основании, что это, очевидно, домашнее задание, которое OP должен выяснить для себя. (Примечание для студентов - вопросы, которые включают «КУРС» или «СТУДЕНТ» или другие таблицы, которые указывают на академическое происхождение вопроса, являются prima facie, которые считаются домашними заданиями. Именно так вы знаете ...). В конце я предполагаю, что я просто опубликую этот комментарий ... (*** sigh ***) –

ответ

1

Вы можете использовать case выражение, которое лечит 2 и 3 то же самое, а затем подсчитать отчетливое количество курсов на одного студента:

SELECT student_id 
FROM  courses 
WHERE course >= 1 AND course <= 4 
GROUP BY student_id 
HAVING COUNT (DISTINCT CASE course WHEN 2 THEN 3 ELSE course END) = 3 
+0

Хорошая работа. Выражение 'CASE' в предложении' HAVING' является приятным прикосновением. Мне стыдно, что я не думал о чем-то подобном. :-) –

+0

Спасибо! Я попробую! – user5004724

Смежные вопросы