Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка от Бакиной А.С.,Пмд-31.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.64 Mб
Скачать

Проектирование sql-запросов.

  1. Создать запрос по вычислению для каждой дисциплины количество всего часов с сортировкой по убыванию:

SELECT Disciplina.Nazvanie AS НазваниеДисциплины,

Sum(Zanyatiya.KolichestvoChasov) AS ОбщееКол

FROM Disciplina, Zanyatiya

WHERE (Disciplina.Kod=Zanyatiya.KodDisciplini)

GROUP BY Disciplina.Nazvanie

ORDER BY ОбщееКол DESC

2. Создать запрос по вычислению общего количества часов по всем дисциплинам учебного плана:

SELECT Sum(Zanyatiya.KolichestvoChasov) AS ОбщееКол

FROM Zanyatiya

3. Создать запрос по вычислению общего количества часов по видам занятий и тоже с разбивкой по циклам:

SELECT Disciplina.Cikl AS ЦиклДисциплин, Zanyatiya.TipZanyatiya AS ТипЗанятия,

Sum(Zanyatiya.KolichestvoChasov) AS ОбщееКол

FROM Disciplina, Zanyatiya

WHERE Disciplina.Kod=Zanyatiya.KodDisciplini

GROUP BY Disciplina.Cikl, Zanyatiya.TipZanyatiya

4. Создать запрос по вычислению общего количества часов по циклам дисциплин с указанием обязательных и самостоятельных часов с сортировкой по убыванию:

SELECT Disciplina.Cikl AS ЦиклДисциплин,

Sum(Zanyatiya.KolichestvoChasov) AS ОбщееСамост

FROM Disciplina, Zanyatiya

WHERE ((Disciplina.Kod=Zanyatiya.KodDisciplini) AND ((Zanyatiya.TipZanyatiya="Individ.rabota") OR (Zanyatiya.TipZanyatiya="Samost.rabota")))

GROUP BY Disciplina.Cikl

ORDER BY ОбщееСамост DESC

SELECT Disciplina.Cikl AS ЦиклДисциплин,

Sum(Zanyatiya.KolichestvoChasov) AS ОбщееОбяз

FROM Disciplina, Zanyatiya

WHERE ((Disciplina.Kod=Zanyatiya.KodDisciplini) AND ((Zanyatiya.TipZanyatiya="Lekciya") OR (Zanyatiya.TipZanyatiya="Practika")))

GROUP BY Disciplina.Cikl

ORDER BY ОбщееОбяз DESC

5. Создать запрос по выдачи для каждой дисциплины ФИО преподавателя, его должность, кафедру на которой он работает и контактный телефон:

SELECT Disciplina.Nazvanie AS НазваниеДисциплины,

Prepodavatel.FIO AS ФИОПреподавателя,

Prepodavatel.Dolshnost AS Должность, Prepodavatel.Kafedra AS Кафедра,

Prepodavatel.Telefon AS Телефон

FROM Prepodavatel,Disciplina,Prepodaet

WHERE (Disciplina.Kod = Prepodaet.KodDisciplini AND Prepodavatel.TabNomerPrepodavatelya = Prepodaet.TabNomerPrepodavatelya)

6. Создать запрос для каждого семестра по выдаче для каждой дисциплины этого семестра общего количества часов, количества занятий различного вида (лекций, практик и т.д.) с указанием коэффициента значимости. Для этого использовать формулу пересчета часов в количество (деление на два). В этом запросе отразить отчетность по каждому виду занятий, ФИО преподавателя:

SELECT Disciplina.Semestr AS Семестр, Disciplina.Nazvanie AS Дисциплина,

Prepodavatel.FIO AS ФИОПреподавателя, Zanyatiya.TipZanyatiya AS ТипЗанятия, Sum(Zanyatiya.KolichestvoChasov) AS ОбщееКол,

Zanyatiya.FormaOtchetnosti AS ФормаОт, Zanyatiya.KoefZnachimosti AS КоэффициентЗн, Sum(Zanyatiya.KolichestvoChasov)/2 AS КолЗанятий

FROM Disciplina, Zanyatiya, Prepodavatel,Prepodaet

WHERE (Disciplina.Kod=Prepodaet.KodDisciplini AND Prepodavatel.TabNomerPrepodavatelya=Prepodaet.TabNomerPrepodavatelya AND Disciplina.Kod=Zanyatiya.KodDisciplini)

GROUP BY Disciplina.Semestr, Disciplina.Nazvanie, Prepodavatel.FIO , Zanyatiya.TipZanyatiya, Zanyatiya.FormaOtchetnosti,

Zanyatiya.KoefZnachimosti

7. Создать аналогичный запрос для каждого преподавателя по выдаче для каждой его дисциплины общего количества часов, количества занятий различного вида (лекций, практик и т.д.). Для этого использовать формулу пересчета часов в количество (деление на два). Сформировать общее количество часов для каждого преподавателя и суммарное количество часов для него по семестрам, считая, что в осенний семестр включаются все дисциплины с нечетными номерами, а в весенний семестр- все дисциплины с четными номерами:

SELECT Prepodavatel.FIO AS ФИОПреподавателя, Disciplina.Nazvanie, Zanyatiya.TipZanyatiya AS ТипЗан, SUM(Zanyatiya.KolichestvoChasov) AS ОбщееКол,

Sum(Zanyatiya.KolichestvoChasov)/2 AS КолЗан

FROM Prepodavatel, Prepodaet, Disciplina, Zanyatiya

WHERE (Prepodavatel.TabNomerPrepodavatelya=Prepodaet.TabNomerPrepodavatelya AND Prepodaet.KodDisciplini=Disciplina.Kod AND

Disciplina.Kod=Zanyatiya.KodDisciplini )

GROUP BY Prepodavatel.FIO, Disciplina.Nazvanie, Zanyatiya.TipZanyatiya

SELECT Prepodavatel.FIO AS ФИОПреподавателя, Sum(Zanyatiya.KolichestvoChasov) AS ОбщееКол

FROM Disciplina,Zanyatiya,Prepodaet,Prepodavatel

WHERE (Disciplina.Kod=Zanyatiya.KodDisciplini AND Disciplina.Kod=Prepodaet.KodDisciplini AND Prepodaet.TabNomerPrepodavatelya=Prepodavatel.TabNomerPrepodavatelya)

GROUP BY Prepodavatel.FIO, Disciplina.Semestr

ORDER BY ОбщееКол