powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выборка с ограничениями
7 сообщений из 7, страница 1 из 1
Выборка с ограничениями
    #39986153
TheV1RuS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите найти решение, перепробовал разные способы, ничего не работает.
Условие, есть таблица, (см. пример), пример условный и оценок может быть больше, нужно сделать выборку так, чтобы результат выдал Фамилии только тех, у кого оценок "5" больше или равно 3 и нет ни одной оценки "2".
Перепробовал разные запросы, ничего не получается. Пробовал комбинировать WHERE и HAVING. Есть ощущение, что что-то упускаю, но в виду отсутствия большого опыта не могу понять, что именно
Единственное решение, которое сработало, но нужен один запрос, а не комбинация двух.
Самая большая проблема в том, как целиком исключить из выборки тех, у кого "2". Так как тех, у кого 3 "5" вывести получается.
P.s. Да, я понимаю что таблица не нормализирована.
За ранее спасибо
Код: plsql
1.
2.
3.
4.
 
SELECT fio FROM journal5 WHERE mark = '5' GROUP BY fio HAVING COUNT(mark) >= 3
minus
SELECT fio FROM journal5 WHERE mark = '2';


Фио ОценкаПетров 5Петров 5Петров 5Петров 4Петров 3Иванов 5Иванов 5 Иванов 5Иванов 2Иванов 4Сидоров 5Сидоров 5Сидоров 4Сидоров 4Сидоров 4
...
Рейтинг: 0 / 0
Выборка с ограничениями
    #39986159
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TheV1RuS,

having count(case when ...
...
Рейтинг: 0 / 0
Выборка с ограничениями
    #39986175
TheV1RuS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env, case ведь возвращает одно из значений, согласно условию, а так как с case никогда дела не имел, смотрю на примеры, а в примерах везде магазин и если чего то нет в наличии, case возвращает не null, а заданную фразу, подскажи пожалуйста, как построить case таким образом, чтобы он отбрасывал не нужное, если я правильно тебя понял.
...
Рейтинг: 0 / 0
Выборка с ограничениями
    #39986176
ASNexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
group by fio having count(case when mark = 5 then 1 end) >= 3 and count(case when mark = 2 then 1 end) = 0
...
Рейтинг: 0 / 0
Выборка с ограничениями
    #39986178
TheV1RuS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASNexus, спасибо огромное, теперь на основе этого примера я разберусь и в подобных ситуациях буду знать, как поступить
...
Рейтинг: 0 / 0
Выборка с ограничениями
    #39986179
TheV1RuS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASNexus, я ведь правильно понимаю, что case своеобразный счетчик и проверяет условие when до тех пор, пока оно не будет соответствовать тому, что за скобкой? или же единица тут исполняет роль "True"?
Код: plsql
1.
count(case when mark = 5 then 1 end) >= 3
...
Рейтинг: 0 / 0
Выборка с ограничениями
    #39986184
ASNexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TheV1RuS,

Вообще-то, лучше RTFM SQL Language Reference.
Но, если в двух словах: case при выполнении условия when возвращает значение then, иначе возвращает null.
Count считает все значения, кроме null.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выборка с ограничениями
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]