
8) Запросы бд
--1. Выдать список сотрудников администрации с указанием должности.
Select ФИО, Должность
From (Учетные_Данные as У join Лич_Данные as Л on У.Табл_Номер=Л.Табл_Номер) join Отделы as О on У.Код_Отдела=О.Код_Отдела
where Назв_Отдела='администрация'
ФИО |
Должность |
Баимкин Дмитрий Леонидович |
Директор |
Фалалеев Максим Борисович |
зам. Директора |
Андропов Андрей Андреевич |
Юрист |
Лукашин Алексей Александрович |
Диспетчер |
Пурко Борис Борисович |
Юрист |
Ковалева Анастасия Валерьевна |
Техничка |
Волков Эмир Махмудович |
Юрист |
Наумов Антон Данилович |
Программист |
Иванова Светлана Борисовна |
Секретарь Отдела |
Малютина Тамара Васильевна |
Секретарь Директора |
--2. Выдать полную информацию о всех автобусах автопредприятия, произведенных в 2006 году.
Select Борт_номер,Гос_Номер,Марка,Модель,Год_выпуска,Пробег,Вместимость
From (Автобусы as А join Вмест_Авто as В on А.Код_Марки=В.Код_Марки)
Where Год_Выпуска='2006'
Order by Марка
Борт_Номер |
Гос_Номер |
Марка |
Модель |
Год_Выпуска |
Пробег |
Вместимость |
1234 |
АТ664 |
ГОЛАЗ |
6228 |
2006 |
190000 |
14 |
1231 |
УГ342 |
ЛИАЗ |
5293 |
2006 |
290000 |
11 |
--3. Показать количество автобусов, которые обслуживают каждый рейс 2012-04-1.
Select Номер_марш, count(Номер_Марш) as Количество_автобусов
From Марш_Лист
Where Дата='2012-04-15'
Group by Номер_марш
Номер_Марш |
Количество_Автобусов |
101 |
2 |
102 |
2 |
103 |
3 |
104 |
3 |
105 |
3 |
106 |
2 |
--4. Выдать информацию об автобусах, которые работают по 103 маршруту 2012-04-15.
Select Марка, Гос_Номер, А.Борт_Номер
From ((Марш_Лист as М join Экипаж as Э on М.Табл_Номер_Вод=Э.Табл_Номер)
join Автобусы as А on Э.Борт_Номер=А.Борт_Номер) join Вмест_Авто as В on А.Код_Марки=В.Код_Марки
Where Дата='2012-04-15' and Номер_Марш='103'
Group by Марка, Гос_Номер, А.Борт_Номер
Марка |
Гос_Номер |
Борт_Номер |
КАВЗ |
АС912 |
1254 |
ЛИАЗ |
АС065 |
1183 |
ПАЗ |
АК823 |
1154 |
--5. Показать информацию об автобусах и количество выполненных рейсов за апрель.
Select А.Гос_Номер, В.Марка, sum(Кол_Во_Вып_Рейс) as Кол_во_Вып_Рейсов, case Datepart(mm,Дата)
when 1 then 'Январь'
when 2 then 'Февраль'
when 3 then 'Март'
when 4 then 'Апрель'
when 5 then 'Май'
when 6 then 'Июнь'
when 7 then 'Июль'
when 8 then 'Август'
when 9 then 'Сентябрь'
when 10 then 'Октябрь'
when 11 then 'Ноябрь'
when 12 then 'Декабрь'
end as Месяц
From ((Марш_Лист as М join Экипаж as Э on М.Табл_Номер_Вод=Э.Табл_Номер)
join Автобусы as А on Э.Борт_Номер=А.Борт_Номер) join Вмест_Авто as В on А.Код_Марки=В.Код_Марки
Where Datepart(mm,Дата)=4
Group by А.Гос_Номер, В.Марка, Datepart(mm,Дата)
Гос_Номер |
Марка |
Кол_Во_Вып_Рейсов |
Месяц |
АК823 |
ПАЗ |
60 |
Апрель |
АК976 |
ПАЗ |
64 |
Апрель |
АН231 |
ПАЗ |
48 |
Апрель |
АС065 |
ЛИАЗ |
60 |
Апрель |
АС912 |
КАВЗ |
60 |
Апрель |
АТ004 |
ЛИАЗ |
44 |
Апрель |
АТ123 |
ПАЗ |
44 |
Апрель |
АТ664 |
ГОЛАЗ |
64 |
Апрель |
ЕМ005 |
ЛИАЗ |
48 |
Апрель |
ЕМ754 |
ПАЗ |
56 |
Апрель |
ЕР237 |
ГОЛАЗ |
56 |
Апрель |
УГ342 |
ЛИАЗ |
56 |
Апрель |
УН342 |
ПАЗ |
48 |
Апрель |
УН765 |
ЛИАЗ |
44 |
Апрель |
--6. Показать какое количество смен отработали водители и кондукторы за месяц.
Select ФИО, Должность, count(Кол_Во_Вып_Рейс) as Кол_Во_Смен, case Datepart(mm,Дата)
when 1 then 'Январь'
when 2 then 'Февраль'
when 3 then 'Март'
when 4 then 'Апрель'
when 5 then 'Май'
when 6 then 'Июнь'
when 7 then 'Июль'
when 8 then 'Август'
when 9 then 'Сентябрь'
when 10 then 'Октябрь'
when 11 then 'Ноябрь'
when 12 then 'Декабрь'
end as Месяц
From (Марш_Лист as М join Лич_Данные as Л on М.Табл_Номер_Вод=Л.Табл_Номер) join Учетные_данные as У on М.Табл_Номер_Вод=У.Табл_Номер
Where Datepart(mm,Дата)=4
Group by ФИО, Должность, Datepart(mm,Дата)
union
select ФИО, Должность, count(Кол_Во_Вып_Рейс) as Кол_Во_Смен, case Datepart(mm,Дата)
when 1 then 'Январь'
when 2 then 'Февраль'
when 3 then 'Март'
when 4 then 'Апрель'
when 5 then 'Май'
when 6 then 'Июнь'
when 7 then 'Июль'
when 8 then 'Август'
when 9 then 'Сентябрь'
when 10 then 'Октябрь'
when 11 then 'Ноябрь'
when 12 then 'Декабрь'
end as Месяц
From (Марш_Лист as М join Лич_Данные as Л on М.Табл_Номер_Кондр=Л.Табл_Номер) join Учетные_данные as У on М.Табл_Номер_Кондр=У.Табл_Номер
Where Datepart(mm,Дата)=4
Group by ФИО, Должность, Datepart(mm,Дата)
ФИО |
Должность |
Кол_Во_Вып_Смен |
Месяц |
Алейник Валентина Владимировна |
Кондуктор |
4 |
Апрель |
Александров Олег Иванович |
Водитель |
4 |
Апрель |
Баимкин Дмитрий Леонидович |
Водитель |
4 |
Апрель |
Беляков Николай Феофанович |
Водитель |
4 |
Апрель |
Бизякин Анатолий Васильевич |
Кондуктор |
4 |
Апрель |
Бурова Надежда Васильевна |
Кондуктор |
4 |
Апрель |
Волкова Татьяна Львовна |
Кондуктор |
4 |
Апрель |
Григорьева Зоя Григорьевна |
Кондуктор |
4 |
Апрель |
Дик Инна Эдуардовна |
Кондуктор |
4 |
Апрель |
Дорофеева Рита Ивановна |
Кондуктор |
4 |
Апрель |
Иванов Николай Геннадьевич |
Водитель |
4 |
Апрель |
Иванова Ольга Юрьевна |
Кондуктор |
4 |
Апрель |
Карнеева Нелли Васильевна |
Кондуктор |
4 |
Апрель |
Карпова Евгения Николаевна |
Кондуктор |
4 |
Апрель |
Кашкарова Елена Геннадьевна |
Кондуктор |
4 |
Апрель |
Красных Андрей Николаевич |
Водитель |
4 |
Апрель |
Ларионов Николай Анатольевич |
Водитель |
4 |
Апрель |
Михайлов Вячеслав Аркадьевич |
Водитель |
4 |
Апрель |
Николаева Надежда Николаевна |
Кондуктор |
7 |
Апрель |
Охотин Максим Николаевич |
Водитель |
3 |
Апрель |
Павлов Валерий Михайлович |
Водитель |
4 |
Апрель |
Павлов Николай Германович |
Водитель |
4 |
Апрель |
Пономарев Андрей Иванович |
Водитель |
4 |
Апрель |
Смоленцев Иван Владимирович |
Водитель |
4 |
Апрель |
Степанов Анатолий Фирсович |
Водитель |
4 |
Апрель |
Черемисина Евгения Наумовна |
Кондуктор |
4 |
Апрель |
Шихматов Александр Алексеевич |
Водитель |
4 |
Апрель |
Якушенко Евгения Александровна |
Кондуктор |
4 |
Апрель |
Ястребов Александр Валентинович |
Водитель |
4 |
Апрель |
--7. Выдать фамилию директора пассажирского автопредприятия.
Select ФИО
From (Учетные_Данные as У join Лич_Данные as Л on У.Табл_Номер=Л.Табл_Номер) join Отделы as О on У.Код_Отдела=О.Код_Отдела
where Должность='Директор'
ФИО |
Баимкин Игорь Леонидович |
--8. Выдать информацию по маршруту, на котором работал 2012-04-14 Степанов Анатолий Фирсович.
Select А.Борт_Номер, Ма.Номер_Марш, Ма.Маршрут, Ма.Протяженность
From ((Марш_Лист as М join Экипаж as Э on М.Табл_Номер_Вод=Э.Табл_Номер)
join Автобусы as А on Э.Борт_Номер=А.Борт_Номер)
join Лич_Данные as Л on М.Табл_Номер_Вод=Л.Табл_Номер
join Маршрут as Ма on Ма.Номер_Марш=М.Номер_Марш
Where Дата='2012-04-14' and ФИО='Степанов Анатолий Фирсович'
Group by А.Борт_Номер, Ма.Номер_Марш, Ма.Маршрут, Ма.Протяженность
Борт_Номер |
Номер_Марш |
Маршрут |
Протяженность |
1133 |
104 |
маг. Спутник, пл. Сапеги, ул. Чкалова, ул. Котовского, ул. Островского, ул. Гагарина |
21 |
--9. Выдать информацию о работниках обслуживающих маршруты, которые младше 1982 года.
Select ФИО, Должность, Datepart(yy,Дата_Рожд) as Год_Рождения
From (Учетные_Данные as У join Лич_Данные as Л on У.Табл_Номер=Л.Табл_Номер) join Отделы as О on У.Код_Отдела=О.Код_Отдела
where Назв_Отдела='Обслуж_Маршруты' and Datepart(yy,Дата_Рожд)>=1982
ФИО |
Должность |
Год Рождения |
Охотин Максим Николаевич |
Водитель |
1982 |
Ястребов Александр Валентинович |
Водитель |
1984 |
Ларионов Николай Анатольевич |
Водитель |
1983 |
Иванов Николай Геннадьевич |
Водитель |
1983 |
Павлов Николай Германович |
Водитель |
1986 |
Карпова Евгения Николаевна |
Кондуктор |
1983 |
Степанов Анатолий Фирсович |
Водитель |
1984 |
--10. Вывести марки и вместимость тех автобусов, которые обслуживают 101 маршрут. (Корелированный подзапрос)
Select Марка, Вместимость
From Вмест_Авто В
Where Exists (
Select *
from (Автобусы as А join Экипаж as Э on Э.Борт_Номер=А.Борт_Номер)
join Учетные_Данные as У on У.Табл_Номер=Э.Табл_Номер
join Марш_Лист as М on М.Табл_Номер_Вод=У.ТАбл_Номер
Where Номер_Марш='101' and А.Код_Марки=В.Код_Марки
Group by Марка, Вместимость)
Марка |
Вместимость |
ПАЗ |
54 |
КАВЗ |
89 |
--11. Вывести список кондукторов и водиелей которые не работали 12 апреля. (Внешний подзапрос)
Select ФИО, Должность
From Лич_Данные as Л right join Учетные_Данные as У on Л.Табл_Номер=У.Табл_Номер
Where Л.Табл_Номер not in(select Табл_Номер_Вод
from Марш_Лист Ма
Where Дата='2012-04-12' and Ма.Табл_Номер_Вод=У.Табл_Номер) and Л.Табл_Номер not in (select Табл_Номер_Кондр
from Марш_Лист Ма
Where Дата='2012-04-12' and Ма.Табл_Номер_Кондр=У.Табл_Номер) and (Должность='Кондуктор' or Должность='Водитель')
ФИО |
Должность |
Охотин Максим Николаевич |
Водитель |
Николаева Надежда Николаевна |
Кондуктор |