Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прокат автомобилей.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
18.5 Mб
Скачать
  1. Запросы

-- 1. Простые запросы:

-- Вывод списка клиентов

SELECT cl.client_id as 'Индификатор клиента'

,cl.name as 'ФИО'

,cl.passport_data as 'Паспортные данные'

,cl.number_vu as 'Номер в/у'

,cl.phone as 'Телефон'

FROM [car_rental].[dbo].[client] as cl

-- список клиентов у которых заказов больше 1

SELECT cl.client_id as 'Индификатор клиента'

,cl.name as 'ФИО'

,cl.phone as 'Телеофн'

,cl.number_of_orders as 'Кол-во заказов'

FROM [car_rental].[dbo].[client]as cl

WHERE cl.number_of_orders>1

--Отчеты об автомобиле с номер А164РУ154

SELECT r.report_id as 'Номер отчета'

,r.car_number as 'Номер автомобиля'

,r.information_damage as 'Информация о првреждения'

,r.amount_maintenance as 'Затраты на обслуживание'

FROM [car_rental].[dbo].[report] as r

WHERE r.car_number='А164РУ154'

--Вывести данные об оплате после 10 мая (включительно) отсортированые по дате платежей

SELECT p.payment_id as 'Номер платежа'

,p.contract_number as 'Номер контракта'

,p.amount as 'Сумма'

,p.date_payment as 'Дата оплаты'

FROM [car_rental].[dbo].[payment] as p

WHERE p.date_payment >= '2015.05.10'

ORDER BY p.date_payment

--Вывести запрлату за 12 месяцев сотрудников, с заработной платов диапозоне 25000 - 30000

SELECT em.name as 'ФИО'

,em.salary*12 as 'Зарплата за год'

FROM [car_rental].[dbo].[employee] as em

WHERE em.salary between 25000 and 30000

--Вывести данные об австомобиле стоимость больше 2500 или автомобиле с пробегом меньше 1000

SELECT c.car_number as 'Номер автомобиля'

,c.mileage as 'Пробег'

,c.price_rub_day as 'Цена за аренду'

FROM [car_rental].[dbo].[car] as c

WHERE c.price_rub_day >= 2500 OR c.mileage <= 1000

--Выдать ФИО киентов, с номерами телефонов окончивающими на 5 или 7

SELECT c.name as 'ФИО'

,c.phone as 'Телефон'

FROM [car_rental].[dbo].[client] as c

WHERE c.phone like '%5' OR c.phone like '%7'

--Выдать ФИО клиентов, в фамили которых 5 буква «о».

SELECT c.name as 'ФИО'

FROM [car_rental].[dbo].[client] as c

WHERE c.name like '____î%'

-- 2. Соединения:

--Вывод списка сотрудников c зарплатой меньше 25000

SELECT e.employee_id as 'Индификатор работника'

,e.name as 'ФИО'

,p.position_name as 'Должность'

FROM [car_rental].[dbo].[employee] as e

,[car_rental].[dbo].[position] as p

WHERE e.position_id = p.position_id and e.salary <= 25000

--Вывод список договоров;

SELECT cont.contract_number as 'Номер контракта'

,cont.car_number as 'Номер автомобиля'

,cont.date_of_signing as 'Дата заключения'

,st.payment_status_name as 'Статус оплта'

FROM [car_rental].[dbo].[contract] as cont

INNER JOIN [car_rental].[dbo].[payment_status] as st

on cont.payment_status_id = st.payment_status_id

--Вывод списка клиентов с необлаченными договорами;

SELECT cl.client_id as 'Индификатор клиента'

,cl.name as 'ФИО'

,cl.passport_data as 'Паспортные данные'

,cl.phone as 'Телефон'

,st.payment_status_name as 'Статус оплты'

FROM [car_rental].[dbo].[contract] as cont

INNER JOIN [car_rental].[dbo].[client] as cl

on cont.client_id = cl.client_id

INNER JOIN [car_rental].[dbo].[payment_status] as st

on cont.payment_status_id = st.payment_status_id

WHERE st.payment_status_name <> 'Оплачено'

--Вывести автомобили и их характеристики

SELECT p.car_id as 'Индификатор автомобиля'

,c.car_number as 'Номер автомобиля'

,br.car_brand_name as 'Марка'

,cn.name as 'Название'

,d.drive_type_name as 'Тип привода'

,t.transmission_name as 'Тип трансмиссии'

,s.car_steering_wheel_name as 'Положение руля'

,b.body_type_name as 'Тип кузова'

,cl.color_name as 'Цвет'

,p.capacity as 'Вместимость(чел)'

FROM [car_rental].[dbo].[car] as c

,[car_rental].[dbo].[body_type] as b

,[car_rental].[dbo].[car_full_name] as n

,[car_rental].[dbo].[car_steering_wheel] as s

,[car_rental].[dbo].[drive_type] as d

,[car_rental].[dbo].[performance_сar] as p

,[car_rental].[dbo].[transmission] as t

,[car_rental].[dbo].[color] as cl

,[car_rental].[dbo].[car_brand] as br

,[car_rental].[dbo].[car_name] as cn

WHERE c.car_id=p.car_id and p.body_type_id = b.body_type_id

and p.car_full_name_id = n.car_full_name_id and p.car_steering_wheel_id = s.car_steering_wheel_id

and p.color_id = cl.color_id and p.drive_type_id = d.drive_type_id and p.transmission_id = t.transmission_id

and n.car_brand_id = br.car_brand_id and n.car_name_id = cn.car_name_id

O RDER BY p.car_id

--Вывод списка автомобилей готовых к аренде

SELECT c.car_number as 'Номер автомобиля'

,br.car_brand_name as 'Марка'

,cn.name as 'Название'

,d.drive_type_name as 'Тип привода'

,t.transmission_name as 'Тип трасмиссии'

,s.car_steering_wheel_name as 'Положение руля'

,b.body_type_name as 'Тип кузова'

,cl.color_name as 'Цвет'

,p.capacity as 'Вместимость(чел)'

FROM [car_rental].[dbo].[car] as c

,[car_rental].[dbo].[body_type] as b

,[car_rental].[dbo].[car_full_name] as n

,[car_rental].[dbo].[car_steering_wheel] as s

,[car_rental].[dbo].[drive_type] as d

,[car_rental].[dbo].[performance_сar] as p

,[car_rental].[dbo].[transmission] as t

,[car_rental].[dbo].[color] as cl

,[car_rental].[dbo].[car_brand] as br

,[car_rental].[dbo].[car_name] as cn

,[car_rental].[dbo].[willingness_to_lease] as w

WHERE c.car_id=p.car_id and p.body_type_id = b.body_type_id

and p.car_full_name_id = n.car_full_name_id and p.car_steering_wheel_id = s.car_steering_wheel_id

and p.color_id = cl.color_id and p.drive_type_id = d.drive_type_id and p.transmission_id = t.transmission_id

and n.car_brand_id = br.car_brand_id and n.car_name_id = cn.car_name_id and c.willingness_to_lease_id = w.willingness_to_lease_id

and w.willingness_to_lease_name = 'Готов'

ORDER BY p.car_id

-- 3. Подзапросы:

--Получить номера договоров с автомобилем стоимость аренды которых выше 2000 SELECT ct.contract_number as 'Номер контракта'

,ct.car_number as 'Номер автомобиля'

FROM [car_rental].[dbo].[contract] as ct

WHERE ct.car_number in (SELECT c.car_number

FROM[car_rental].[dbo].[car] as c

WHERE c.price_rub_day >='2000')

--Получить номера договоров и автомобиль клиента «Петрова»

SELECT ct.contract_number as 'Номер контракта'

,ct.car_number as 'Номер автомобиля'

FROM [car_rental].[dbo].[contract] as ct

WHERE ct.client_id = (SELECT c.client_id

FROM[car_rental].[dbo].[client] as c

WHERE c.name like 'Петров%')

--Получить отчет об автомобиле сданным Петровым

SELECT r.report_id as 'Номер отчета'

,r.contract_number as 'Номер контракта'

,r.car_number as 'Номер автомобиля'

,r.information_damage as 'Информация о повреждениях'

,r.amount_maintenance as 'Расходы на обслуживание'

FROM [car_rental].[dbo].[report] as r

WHERE r.contract_number = (SELECT c.contract_number

FROM [car_rental].[dbo].[contract] as c

WHERE c.client_id = (SELECT cl.client_id

FROM [car_rental].[dbo].[client] as cl

WHERE cl.name like 'Петров%'))

-- 4. Встроенные функции:

--Средняя стоимость проката

SELECT AVG(c.price_rub_day) as 'Средняя стоимость проката'

FROM [car_rental].[dbo].[car] as c

--Средняя стоимость обслуживания автомобиля с номером 'А164РУ154' SELECT AVG(r.amount_maintenance) as 'Средняя стоимость обслуживания'

FROM [car_rental].[dbo].[report] as r

WHERE r.car_number = 'А164РУ154'

--Сколько договоров оформил Сидоров

SELECT COUNT(*) as 'Кол-во договоров'

FROM [car_rental].[dbo].[contract] as c

WHERE c.employee_id = (SELECT e.employee_id

FROM [car_rental].[dbo].[employee] as e

WHERE e.name like 'Сидоров%')

--Выввести расходы на зарплату

SELECT SUM(e.salary) as 'Зарплата сотрудникам'

FROM [car_rental].[dbo].[employee] as e

--Вывести потраченую сумму для каждого клиента

SELECT c.client_id as 'Индификотор клиаента'

,c.name as 'ФИО'

,SUM(p.amount) as 'Сумма'

FROM [car_rental].[dbo].[client] as c

INNER JOIN [car_rental].[dbo].[contract] as con

on c.client_id = con.client_id

INNER JOIN [car_rental].[dbo].[payment] as p

on con.contract_number = p.contract_number

GROUP BY c.name, c.client_id

--Вычислить количество дней прошедших с последного ТО

SELECT c.car_number as 'Номер автомобиля'

,c.date_of_last_TO as ' Дата последнего ТО'

,DATEDIFF(day, c.date_of_last_TO, GetDate())

as ' Кол-во дней с последнего ТО '

FROM [car_rental].[dbo].[car] as c

--Вывести список клиентов которые заплатили более 10000

SELECT c.client_id as 'Индификатор клиента'

,c.name as 'ФИО'

,SUM(p.amount) as 'Сумма'

FROM [car_rental].[dbo].[client] as c

INNER JOIN [car_rental].[dbo].[contract] as con

on c.client_id = con.client_id

INNER JOIN [car_rental].[dbo].[payment] as p

on con.contract_number = p.contract_number

GROUP BY c.name, c.client_id HAVING SUM(p.amount)>10000