Advertisement
Guest User

Untitled

a guest
Oct 12th, 2019
584
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 6.20 KB | None | 0 0
  1. CREATE DATABASE Airport
  2.  
  3. CREATE TABLE Planes(
  4.                     [Id] INT PRIMARY KEY IDENTITY(1,1)  ,
  5.                     [Name] VARCHAR(30) NOT NULL,
  6.                     [Seats]INT NOT NULL ,
  7.                     [Range] INT NOT NULL
  8.                     )
  9.  
  10. CREATE TABLE Flights(
  11.                     [Id] INT PRIMARY KEY IDENTITY (1,1),
  12.                     [DepartureTime] DATETIME ,
  13.                     [ArrivalTime] DATETIME,
  14.                     [Origin] VARCHAR(50) NOT NULL ,
  15.                     [Destination] VARCHAR(50) NOT NULL,
  16.                     [PlaneId] INT FOREIGN KEY REFERENCES Planes([Id])
  17.                     )
  18.                    
  19.                    
  20. CREATE TABLE Passengers(
  21.                     [Id] INT PRIMARY KEY IDENTITY (1,1),
  22.                     [FirstName] VARCHAR(30) NOT NULL,
  23.                     [LastName] VARCHAR(30) NOT NULL,
  24.                     [Age] INT NOT NULL,
  25.                     [Address] VARCHAR(30) NOT NULL ,
  26.                     [PassportId] VARCHAR(11) NOT NULL
  27.                     )
  28.                    
  29.  
  30. CREATE TABLE LuggageTypes(
  31.                     [Id] INT PRIMARY KEY IDENTITY (1,1),
  32.                     [Type] VARCHAR(30) NOT NULL,
  33.                     )
  34.                    
  35.                    
  36. CREATE TABLE Luggages(
  37.                     [Id] INT PRIMARY KEY IDENTITY (1,1),
  38.                     [LuggageTypeId] INT FOREIGN KEY REFERENCES LuggageTypes([Id]) NOT NULL ,
  39.                     [PassengerId] INT FOREIGN KEY REFERENCES Passengers([Id]) NOT NULL,
  40.                     )
  41.                    
  42.  
  43. CREATE TABLE Tickets(
  44.                     [Id] INT PRIMARY KEY IDENTITY (1,1),
  45.                     [PassengerId] INT FOREIGN KEY REFERENCES Passengers([Id]) NOT NULL,
  46.                     [FlightId] INT FOREIGN KEY REFERENCES Flights([Id]) NOT NULL,
  47.                     [LuggageId] INT FOREIGN KEY REFERENCES Luggages([Id]) NOT NULL,
  48.                     [Price] DECIMAL(15,2)NOT NULL
  49.                     )
  50.                    
  51.  
  52.  
  53.  
  54. INSERT INTO Planes([Name] , [Seats], [Range])
  55.                 VALUES
  56.                 ('Airbus 336', 112, 5132),
  57.                 ('Airbus 330', 432, 5325),
  58.                 ('Boeing 369', 231, 2355),
  59.                 ('Stelt 297', 254, 2143),
  60.                 ('Boeing 338', 165, 5111),
  61.                 ('Airbus 558', 387, 1342),
  62.                 ('Boeing 128', 345, 5541)
  63.                
  64. INSERT INTO LuggageTypes([Type])
  65.                 VALUES
  66.                 ('Crossbody Bag'),
  67.                 ('School Backpack'),
  68.                 ('Shoulder Bag')
  69.                
  70.                
  71. UPDATE t
  72. SET t.[Price] = t.[Price] * 1.13
  73. FROM Tickets AS t
  74. JOIN Flights AS f ON f.[Id] = t.[FlightId]
  75. WHERE f.[Destination] = 'Carlsbad'
  76.  
  77. --DELETE
  78. DELETE FROM Tickets
  79. WHERE FlightId = (SELECT TOP(1) Id FROM Flights WHERE Destination = 'Ayn Halagim')
  80.   DELETE FROM Flights
  81. WHERE Destination = 'Ayn Halagim'
  82.  
  83.  
  84. SELECT [Origin], [Destination]
  85. FROM Flights
  86. ORDER BY [Origin] ASC , [Destination] DESC
  87.  
  88.  
  89. SELECT [Id], [Name], [Seats], [Range]
  90. FROM Planes
  91. WHERE [Name] LIKE '%tr%'
  92. ORDER BY [Id] ASC , [Name] ASC , [Seats] ASC , [Range] ASC
  93.  
  94.  
  95. SELECT FlightId , SUM(Price) AS [Price]
  96. FROM Tickets
  97. GROUP BY FlightId
  98. ORDER BY SUM([Price]) DESC , [FlightId] ASC
  99.  
  100.  
  101. SELECT TOP(10) p.[FirstName], p.[LastName], t.[Price]
  102. FROM Tickets AS t
  103. JOIN Passengers AS p ON p.[Id] = t.[PassengerId]
  104. ORDER BY t.[Price] DESC , p.[FirstName] ASC , p.[LastName] ASC
  105.  
  106.  
  107. SELECT lt.[Type] , COUNT(lt.Id) AS MostUsedLuggage
  108. FROM Luggages AS l
  109. JOIN LuggageTypes AS lt ON lt.[Id] = l.[LuggageTypeId]
  110. GROUP BY lt.[Type]
  111. ORDER BY MostUsedLuggage DESC, lt.[Type]
  112.  
  113. SELECT p.FirstName + ' ' + p.LastName AS [Full Name],
  114.            f.Origin,
  115.            f.Destination
  116.       FROM Passengers AS p
  117.       JOIN Tickets AS t ON t.PassengerId = p.Id
  118.       JOIN Flights AS f ON f.Id = t.FlightId
  119.     ORDER BY [Full Name], f.Origin, f.Destination
  120.    
  121.    
  122.     SELECT p.FirstName, p.LastName, p.Age
  123.       FROM Passengers AS p
  124.  LEFT JOIN Tickets AS t ON t.PassengerId = p.Id
  125.      WHERE t.Id IS NULL
  126.   ORDER BY p.Age DESC, p.FirstName, p.LastName
  127.  
  128.  
  129.  SELECT p.PassportId, p.Address
  130.      FROM Passengers AS p
  131. LEFT JOIN Luggages AS l ON l.PassengerId = p.Id
  132.     WHERE l.Id IS NULL
  133.  ORDER BY p.PassportId, p.Address
  134.  
  135.  
  136.  SELECT p.FirstName, p.LastName, COUNT(t.Id) AS TotalTrips
  137.      FROM Passengers AS p
  138. LEFT JOIN Tickets AS t ON t.PassengerId = p.Id
  139.  GROUP BY p.FirstName, p.LastName
  140.  ORDER BY TotalTrips DESC, p.FirstName, p.LastName
  141.  
  142.  
  143.  SELECT p.FirstName + ' ' + p.LastName AS [Full Name],
  144.           pl.Name AS [Plane Name],
  145.           f.Origin + ' - ' + f.Destination AS [Trip],
  146.           lt.Type As [Luggage Type]
  147.      FROM Passengers AS p
  148.      JOIN Tickets AS t ON t.PassengerId = p.Id
  149.      JOIN Flights AS f ON f.Id = t.FlightId
  150.      JOIN Planes AS pl ON pl.Id = f.PlaneId
  151.      JOIN Luggages AS l ON l.Id = t.LuggageId
  152.      JOIN LuggageTypes AS lt ON lt.Id = l.LuggageTypeId
  153. ORDER BY [Full Name], Name,Origin, Destination, Type
  154.  
  155.  
  156.  
  157. SELECT k.FirstName, k.LastName, k.Destination, k.Price
  158.   FROM (
  159.     SELECT p.FirstName, p.LastName, f.Destination, t.Price,
  160.            DENSE_RANK() OVER(PARTITION BY p.FirstName, p.LastName ORDER BY t.Price DESC) As PriceRank
  161.       FROM Passengers AS p
  162.       JOIN Tickets AS t ON t.PassengerId = p.Id
  163.       JOIN Flights AS f ON f.Id = t.FlightId
  164.   ) AS k
  165.   WHERE k.PriceRank = 1
  166.   ORDER BY k.Price DESC, k.FirstName, k.LastName, k.Destination
  167.  
  168.  
  169.   SELECT f.Destination, COUNT(t.Id) AS [Count]
  170.      FROM Flights AS f
  171. LEFT JOIN Tickets AS t ON t.FlightId = f.Id
  172.  GROUP BY f.Destination
  173.  ORDER BY [Count] DESC, f.Destination
  174.  
  175.  
  176.    SELECT p.Name, p.Seats, COUNT(t.Id) AS PassengersCount
  177.      FROM Planes AS p
  178. LEFT JOIN Flights AS f ON f.PlaneId = p.Id
  179. LEFT JOIN Tickets AS t ON t.FlightId = f.Id
  180.  GROUP BY p.Name, p.Seats
  181.  ORDER BY PassengersCount DESC, p.Name, p.Seats
  182.  
  183.  
  184.  CREATE FUNCTION udf_CalculateTickets(@origin varchar(50), @destination varchar(50), @peopleCount int)
  185. RETURNS VARCHAR(100)
  186. AS
  187. BEGIN
  188.  
  189. IF (@peopleCount <= 0)
  190. BEGIN
  191.     RETURN 'Invalid people count!'
  192. END
  193.  
  194. DECLARE @tripId INT = (SELECT f.Id FROM Flights AS f
  195.                                               JOIN Tickets AS t ON t.FlightId = f.Id
  196.                                               WHERE Destination = @destination AND Origin = @origin)
  197. IF (@tripId IS NULL)
  198. BEGIN
  199.     RETURN 'Invalid flight!'
  200. END
  201.  
  202. DECLARE @ticketPrice DECIMAL(15,2) = (SELECT t.Price FROM Flights AS f
  203.                                               JOIN Tickets AS t ON t.FlightId = f.Id
  204.                                               WHERE Destination = @destination AND Origin = @origin)
  205.  
  206. DECLARE @totalPrice DECIMAL(15, 2) = @ticketPrice * @peoplecount;
  207.  
  208. RETURN 'Total price ' + CAST(@totalPrice as VARCHAR(30));
  209. END
  210.  
  211.  
  212.  
  213. CREATE PROC usp_CancelFlights
  214. AS
  215. UPDATE Flights
  216. SET DepartureTime = NULL, ArrivalTime = NULL
  217. WHERE ArrivalTime > DepartureTime
  218.  
  219.  
  220.  
  221. CREATE TABLE DeletedPlanes
  222. (
  223.     Id INT,
  224.     Name VARCHAR(30),
  225.     Seats INT,
  226.     Range INT
  227. )
  228.  
  229. CREATE TRIGGER tr_DeletedPlanes ON Planes
  230. AFTER DELETE AS
  231.   INSERT INTO DeletedPlanes (Id, Name, Seats, Range)
  232.       (SELECT Id, Name, Seats, Range FROM deleted)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement