CREATE DATABASE Airport;
USE Airport;
CREATE TABLE Passengers
(
PassengerID INT IDENTITY(1,1) PRIMARY KEY,
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL,
PassportNumber VARCHAR(20) NOT NULL UNIQUE,
Email VARCHAR(100),
Phone VARCHAR(20)
);
CREATE TABLE Flights
(
FlightID INT IDENTITY(1,1) PRIMARY KEY,
FlightNumber VARCHAR(10) NOT NULL UNIQUE,
DepartureCity NVARCHAR(50) NOT NULL,
ArrivalCity NVARCHAR(50) NOT NULL,
DepartureTime DATETIME NOT NULL,
ArrivalTime DATETIME NOT NULL
);
CREATE TABLE Tickets
(
TicketID INT IDENTITY(1,1) PRIMARY KEY,
FlightID INT NOT NULL,
PassengerID INT NOT NULL,
SeatNumber VARCHAR(5) NOT NULL,
Class VARCHAR(10) NOT NULL,
Price DECIMAL(10, 2) NOT NULL,
PurchaseDate DATETIME DEFAULT GETDATE(),
CONSTRAINT FK_Tickets_Flights FOREIGN KEY (FlightID)
REFERENCES Flights(FlightID) ON DELETE CASCADE,
CONSTRAINT FK_Tickets_Passengers FOREIGN KEY (PassengerID)
REFERENCES Passengers(PassengerID) ON DELETE CASCADE,
CONSTRAINT CHK_Ticket_Class CHECK (Class IN ('Бизнес', 'Эконом'))
);
INSERT INTO Passengers (FirstName, LastName)
VALUES ('Иван', 'Иванов');
INSERT INTO Flights (FlightNumber, DepartureCity, ArrivalCity, DepartureTime, ArrivalTime)
VALUES ('SU123', 'Москва', 'Санкт-Петербург', '2023-11-01 10:00:00', '2023-11-01 11:30:00');
INSERT INTO Tickets (FlightID, PassengerID, SeatNumber, Class, Price)
VALUES (1, 1, '1A', 'Бизнес', 15000.00);
—-2---
SELECT *
FROM Flights
WHERE ArrivalCity = 'Санкт-Петербург'
AND DepartureTime >= '2023-11-01'
AND DepartureTime < '2023-11-02'
ORDER BY DepartureTime ASC;
SELECT TOP 1 *,
DATEDIFF(MINUTE, DepartureTime, ArrivalTime) AS DurationMinutes
FROM Flights
ORDER BY DurationMinutes DESC;
SELECT *
FROM Flights
WHERE DATEDIFF(MINUTE, DepartureTime, ArrivalTime) > 120;
SELECT ArrivalCity, SUM(1) AS FlightCount
FROM Flights
GROUP BY ArrivalCity;
SELECT TOP 1 ArrivalCity, SUM(1) AS FlightCount
FROM Flights
GROUP BY ArrivalCity
ORDER BY FlightCount DESC;
SELECT
ISNULL(ArrivalCity, 'ИТОГО ЗА МЕСЯЦ') AS City,
SUM(1) AS FlightCount
FROM Flights
WHERE MONTH(DepartureTime) = 11 AND YEAR(DepartureTime) = 2023
GROUP BY ROLLUP(ArrivalCity);
SELECT F.FlightNumber, F.DepartureTime, F.ArrivalCity
FROM Flights F
LEFT JOIN Tickets T ON F.FlightID = T.FlightID AND T.Class = 'Бизнес'
WHERE DATEDIFF(day, F.DepartureTime, GETDATE()) = 0
GROUP BY F.FlightID, F.FlightNumber, F.DepartureTime, F.ArrivalCity
HAVING SUM(CASE WHEN T.TicketID IS NOT NULL THEN 1 ELSE 0 END) < 10;
SELECT
SUM(1) AS TotalTicketsSold,
SUM(Price) AS TotalRevenue
FROM Tickets
WHERE PurchaseDate >= '2023-11-01'
AND PurchaseDate < '2023-11-02';
SELECT
F.FlightNumber,
F.ArrivalCity,
SUM(CASE WHEN T.TicketID IS NOT NULL THEN 1 ELSE 0 END) AS TicketsSold
FROM Flights F
LEFT JOIN Tickets T ON F.FlightID = T.FlightID
AND T.PurchaseDate >= '2023-11-01'
AND T.PurchaseDate < '2023-11-02'
GROUP BY F.FlightNumber, F.ArrivalCity;
SELECT DISTINCT FlightNumber, ArrivalCity
FROM Flights
WHERE DepartureCity = 'Москва';