Делаю индивидуальную работу по однотабличным запросам в БД(поправьте пожалуйста как правильно должно быть, вот что получилось:
Предположим, что есть БД, нужно вывести запросы в формате:
1. Данные о студентах в предоставленном формате:
«XXX гр – студент Фамилия ИМЯ.» У меня получилось:
SELECT
Upper(s.fk_gruppad_id)) STUD (Lname, 1), Upper(substr(Fname, 1);
FROM STUD S
2. В каком месяце человек родился:
«Имя Отчество Фамилия - <год рождения>», «родился <число> в <день недели> .»
SELECT
*
First_name, Middle_name, Last_name
WHERE YEAR(Birthday, weekday)
3. Вывести список дат сдаваемых экзаменов в зимнюю сессию.
4. SELECT
*
DATE_ID when winter exams
4. Выведите номера групп с 1-го по 3-й курс:
«XXX гр.», «<номер курса>»
SELECT
UPPER(gruppa_ID)
WHERE course = 1 or course = 2 or course = 3;
5. Вывести список студентов женского пола, которые родились в июне и их отчество не соответствует полу
«Фамилия ИМЯ ОТЧЕСТВО - YY лет», «<дата рождения>»
SELECT
Last_name||' '||upper (First_name)||' '||upper (Middle_name)||' - '||
DATEDIFF(YEAR, BIRTHDAY, current_timestamp)||' лет',
Birtday
FROM STUD
WHERE fk_pol_id = 0 and
EXTRACT (month from birthday) = 6 and
mname NOT LIKE '%на'
6. Вывести информацию о преподавателях и длине их имени. Категория длины имени определяется по следующим правилам:
меньше 4 букв – «короткое»
от 4 до 6 букв – «среднее»
от 6 до 15 букв – «длинное»
больше 15 букв – «гигантское»
«Фамилия Имя», «<длина имени>», «<категория длины имени>»
SELECT
*
Lname, Fname, CHAR_LENGTH(Fname),
CASE
WHEN LENGTH(Fname) < 4 THEN 'короткое'
WHEN LENGTH(Fname) = 4 and <=6 THEN 'среднее'
WHEN LENGTH(Fname) = 6 and <=15 THEN 'длинное'
WHEN LENGHT(Fname) > 15 THEN 'гигантское'
ELSE 'среднее'
END
FROM PREPOD