Intereting Posts
Как преобразовать дату Y2K в SQL DATE в SSIS? Как решить ошибку в мутирующей таблице (Oracle)? Внедрение алгоритма ранжирования новостей Hacker в SQL Антенна sql вставляется в строку «-». обходной путь? Нужно ли создавать индексы для внешних ключей? Как объединить два ряда в одну строку в sql? Есть ли эквивалент IBM Iseries / DB2 для SQL Profiler? Перевод атрибутов отношений из диаграммы ER в SQL Столбец недействителен в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY Мой запрос выполняется быстрее во второй раз, как мне это прекратить? Datecolumn: Невозможно передать объект типа «System.DateTime» для ввода «System.String» Как вставить отличительные записи из таблицы A в таблицу B (обе таблицы имеют одинаковую структуру) Индекс для столбца с нулевым значением Использование case Statement в SQL с параметром / переменной для проверки значений Null Вставить запрос в функцию SQL

POSTGRESQL: как фильтровать для создания запроса?

У меня есть вопрос с текстовой книгой; Перечислите идентификаторы и имена людей, которые получили класс A для каждого класса для таблиц;

Студент {studentID, имя} Класс {studentID, имя курса, класс}

и я не уверен, как отфильтровать оценки, чтобы я только показывал учеников А. Пока у меня есть решение

SELECT Student.studentID, Student.name FROM Student, Grade WHERE Student.studentID = Grade.StudentID AND Grade.grade = 'A' AND Grade.grade != 'B' AND Grade.grade != 'C' AND Grade.grade != 'D' AND Grade.grade != 'F'; 

Есть ли более чистый способ, я могу отфильтровать это. Кажется, немного утомительно, что я пишу не равным 4 раза.

 select studentid, s.name from student s inner join grade g using (studentid) group by studentid, s.name having bool_and(g.grade = 'A') 

вы можете использовать класс NOT EXISTS . мы получаем всех учеников, которые не получили А и отфильтровывали их.

 SELECT DISTINCT Student.studentID, Student.name FROM Student JOIN Grade ON Student.studentId = Grade.studentId WHERE NOT EXISTS ( SELECT 1 FROM Grade G WHERE G.grade !='A' and G.studentID = Student.studentID )