Changes between Version 3 and Version 4 of Напредни извештаи од базата (SQL и складирани процедури)


Ignore:
Timestamp:
02/12/25 21:54:56 (10 days ago)
Author:
173067
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Напредни извештаи од базата (SQL и складирани процедури)

    v3 v4  
    66
    77CREATE VIEW MostPopularFlightsReport AS
    8 SELECT 
    9     f.FlightID,
    10     f.FlightNumber,
    11     f.DepartureAirport,
    12     f.ArrivalAirport,
     8SELECT
     9    f.flightid,
     10    f.flight_number,
     11    f.departure_airport,
     12    f.arrival_airport,
    1313    COUNT(b.BookingID) AS NumberOfBookings
    14 FROM 
     14FROM
    1515    Flight f
    16 JOIN 
    17     Booking b ON f.FlightID = b.FlightID
    18 GROUP BY 
    19     f.FlightID, f.FlightNumber, f.DepartureAirport, f.ArrivalAirport
    20 ORDER BY 
     16JOIN
     17    Booking b ON f.flightid = b.flightid
     18GROUP BY
     19    f.flightid, f.flight_number, f.departure_airport, f.arrival_airport
     20ORDER BY
    2121    NumberOfBookings DESC;
    2222
     
    2828
    2929CREATE VIEW AverageDestinationRatingReport AS
    30 SELECT 
    31     d.DestinationID,
    32     d.Name AS DestinationName,
    33     AVG(r.Rating) AS AverageRating
    34 FROM 
     30SELECT
     31    d.destinationid,
     32    d.name AS DestinationName,
     33    AVG(r.rating) AS AverageRating
     34FROM
    3535    Review r
    36 JOIN 
    37     Destination d ON r.TargetID = d.DestinationID
    38 GROUP BY 
    39     d.DestinationID, d.Name
    40 ORDER BY 
     36JOIN
     37    Destination d ON r.target_id = d.DestinationID
     38GROUP BY
     39    d.destinationid, d.name
     40ORDER BY
    4141    AverageRating DESC;
    4242
     
    4949CREATE VIEW UserBookingExpenditureReport AS
    5050SELECT
    51     u.UserID,
    52     u.Name,
    53     u.Surname,
    54     COUNT(b.BookingID) AS NumberOfBookings,
    55     SUM(b.TotalCost) AS TotalExpenditure
     51    u.userid,
     52    u.name,
     53    u.surname,
     54    COUNT(b.bookingid) AS NumberOfBookings,
     55    SUM(b.total_cost) AS TotalExpenditure
    5656FROM
    5757    ApplicationUser u
    5858JOIN
    59     Booking b ON u.UserID = b.UserID
    60 GROUP BY
    61     u.UserID, u.Name, u.Surname
     59    Booking b ON u.userid = b.userid
     60GROUP BY
     61    u.userid, u.name, u.surname
    6262ORDER BY
    6363    TotalExpenditure DESC;
     
    7070
    7171CREATE VIEW PendingPaymentBookingsReport AS
    72 SELECT 
    73     b.BookingID,
    74     u.Name AS UserName,
    75     u.Surname AS UserSurname,
    76     f.FlightNumber,
    77     f.DepartureAirport,
    78     f.ArrivalAirport,
    79     b.BookingDate,
    80     b.TotalCost
    81 FROM 
     72SELECT
     73    b.bookingid,
     74    u.name AS UserName,
     75    u.surname AS UserSurname,
     76    f.flight_number,
     77    f.departure_airport,
     78    f.arrival_airport,
     79    b.booking_date,
     80    b.total_cost
     81FROM
    8282    Booking b
    83 JOIN 
    84     ApplicationUser u ON b.UserID = u.UserID
    85 JOIN 
    86     Flight f ON b.FlightID = f.FlightID
    87 WHERE 
    88     b.PaymentStatus = 'Pending';
     83JOIN
     84    ApplicationUser u ON b.userid = u.userid
     85JOIN
     86    Flight f ON b.flightid = f.flightid
     87WHERE
     88    b.payment_status = 'PENDING';
    8989
    9090}}}
     
    9696CREATE VIEW TopDestinationsWishlistReport AS
    9797SELECT
    98     d.DestinationID,
    99     d.Name AS DestinationName,
    100     d.Country,
    101     COUNT(w.WishlistID) AS NumberOfWishlistEntries
     98    d.destinationid,
     99    d.name AS DestinationName,
     100    d.country,
     101    COUNT(w.wishlistid) AS NumberOfWishlistEntries
    102102FROM
    103103    Wishlist w
    104104JOIN
    105     Destination d ON w.TargetID = d.DestinationID
    106 GROUP BY
    107     d.DestinationID, d.Name, d.Country
     105    Destination d ON w.target_id = d.destinationid
     106GROUP BY
     107    d.destinationid, d.name, d.country
    108108ORDER BY
    109109    NumberOfWishlistEntries DESC
     
    118118CREATE VIEW TopUsersByBookings AS
    119119SELECT
    120     u.UserID,
    121     u.Name,
    122     u.Surname,
    123     COUNT(b.BookingID) AS NumberOfBookings
     120    u.userid,
     121    u.name,
     122    u.surname,
     123    COUNT(b.bookingid) AS NumberOfBookings
    124124FROM
    125125    ApplicationUser u
    126126JOIN
    127     Booking b ON u.UserID = b.UserID
    128 GROUP BY
    129     u.UserID, u.Name, u.Surname
     127    Booking b ON u.userid = b.userid
     128GROUP BY
     129    u.userid, u.name, u.surname
    130130ORDER BY
    131131    NumberOfBookings DESC;
     
    139139CREATE VIEW FrequentFlightReviewers AS
    140140SELECT
    141     u.UserID,
    142     u.Name,
    143     u.Surname,
    144     COUNT(r.ReviewID) AS NumberOfReviews
     141    u.userid,
     142    u.name,
     143    u.surname,
     144    COUNT(r.review_id) AS NumberOfReviews
    145145FROM
    146146    Review r
    147147JOIN
    148     ApplicationUser u ON r.UserID = u.UserID
     148    ApplicationUser u ON r.userid = u.userid
    149149WHERE
    150     r.TargetID IN (SELECT FlightID FROM Flight)
    151 GROUP BY
    152     u.UserID, u.Name, u.Surname
     150    r.target_id IN (SELECT FlightID FROM Flight)
     151GROUP BY
     152    u.userid, u.name, u.surname
    153153ORDER BY
    154154    NumberOfReviews DESC;
     
    156156}}}
    157157
    158 * Извештај за следни летови
    159 
    160 {{{
    161 
    162 CREATE VIEW UpcomingFlightsWithAvailability AS
    163 SELECT
    164     f.FlightID,
    165     f.FlightNumber,
    166     f.DepartureAirport,
    167     f.ArrivalAirport,
    168     f.DepartureTime,
    169     f.ArrivalTime,
    170     f.AvailableSeats
    171 FROM
    172     Flight f
    173 WHERE
    174     f.DepartureTime > NOW() AND f.AvailableSeats > 0
    175 ORDER BY
    176     f.DepartureTime;
    177 
    178 }}}
    179158
    180159* Извештај за најдобри начини на плаќање според вкупната потрошувачка
     
    184163CREATE VIEW PaymentMethodSpendReport AS
    185164SELECT
    186     p.PaymentMethod,
     165    p.payment_method,
    187166    SUM(p.Amount) AS TotalAmountSpent
    188167FROM
    189168    Payment p
    190169GROUP BY
    191     p.PaymentMethod
     170    p.payment_method
    192171ORDER BY
    193172    TotalAmountSpent DESC;
     
    200179
    201180CREATE VIEW FlightBookingByCity AS
    202 SELECT 
    203     a.CityID,
    204     c.Name AS CityName,
    205     COUNT(b.BookingID) AS NumberOfBookings
    206 FROM 
     181SELECT
     182    a.airportid,
     183    c.name AS CityName,
     184    COUNT(b.bookingid) AS NumberOfBookings
     185FROM
    207186    Booking b
    208 JOIN 
     187JOIN
    209188    Flight f ON b.FlightID = f.FlightID
    210 JOIN 
    211     Airport a ON f.DepartureAirport = a.AirportID
    212 JOIN 
    213     City c ON a.CityID = c.CityID
    214 GROUP BY 
    215     a.CityID, c.Name
    216 ORDER BY 
     189JOIN
     190    Airport a ON f.departure_airport = a.airportid
     191JOIN
     192    Destination c ON a.city = c.destinationid
     193GROUP BY
     194    a.airportid, c.name
     195ORDER BY
    217196    NumberOfBookings DESC;
    218197
     
    223202{{{
    224203WITH MonthlyBookings AS (
    225     SELECT 
    226         DATE_TRUNC('month', b.bookingDate) AS month,
    227         d.Name AS destination_name,
    228         COUNT(b.BookingID) AS bookings_count,
    229         RANK() OVER (PARTITION BY DATE_TRUNC('month', b.bookingDate) ORDER BY COUNT(b.BookingID) DESC) AS rank
     204    SELECT
     205        DATE_TRUNC('month', b.booking_date) AS month,
     206        d.name AS destination_name,
     207        COUNT(b.bookingid) AS bookings_count,
     208        RANK() OVER (PARTITION BY DATE_TRUNC('month', b.booking_date) ORDER BY COUNT(b.bookingid) DESC) AS rank
    230209    FROM Booking b
    231     JOIN Flight f ON b.FlightID = f.FlightID
    232     JOIN Airport a ON f.ArrivalAirport = a.AirportID
    233     JOIN Destination d ON a.City = d.DestinationID
     210    JOIN Flight f ON b.flightid = f.flightid
     211    JOIN Airport a ON f.arrival_airport = a.airportid
     212    JOIN Destination d ON a.city = d.destinationid
    234213    GROUP BY month, destination_name
    235 ), 
     214),
    236215
    237216MonthlyFlights AS (
    238     SELECT 
    239         DATE_TRUNC('month', b.bookingDate) AS month,
    240         f.FlightNumber,
    241         COUNT(b.BookingID) AS bookings_count,
    242         RANK() OVER (PARTITION BY DATE_TRUNC('month', b.bookingDate) ORDER BY COUNT(b.BookingID) DESC) AS rank
     217    SELECT
     218        DATE_TRUNC('month', b.booking_date) AS month,
     219        f.flight_number,
     220        COUNT(b.bookingid) AS bookings_count,
     221        RANK() OVER (PARTITION BY DATE_TRUNC('month', b.booking_date) ORDER BY COUNT(b.bookingid) DESC) AS rank
    243222    FROM Booking b
    244     JOIN Flight f ON b.FlightID = f.FlightID
    245     GROUP BY month, f.FlightNumber
    246 ), 
     223    JOIN Flight f ON b.flightid = f.flightid
     224    GROUP BY month, f.flight_number
     225),
    247226
    248227MonthlyAirports AS (
    249     SELECT 
    250         DATE_TRUNC('month', b.bookingDate) AS month,
    251         a.Name AS airport_name,
    252         COUNT(b.BookingID) AS departures_count,
    253         RANK() OVER (PARTITION BY DATE_TRUNC('month', b.bookingDate) ORDER BY COUNT(b.BookingID) DESC) AS rank
     228    SELECT
     229        DATE_TRUNC('month', b.booking_date) AS month,
     230        a.name AS airport_name,
     231        COUNT(b.bookingid) AS departures_count,
     232        RANK() OVER (PARTITION BY DATE_TRUNC('month', b.booking_date) ORDER BY COUNT(b.bookingid) DESC) AS rank
    254233    FROM Booking b
    255     JOIN Flight f ON b.FlightID = f.FlightID
    256     JOIN Airport a ON f.DepartureAirport = a.AirportID
    257     GROUP BY month, a.Name
     234    JOIN Flight f ON b.flightid = f.flightid
     235    JOIN Airport a ON f.departure_airport = a.airportid
     236    GROUP BY month, a.name
    258237)
    259238
    260239SELECT month, 'Destination' AS category, destination_name AS name, bookings_count AS count FROM MonthlyBookings WHERE rank <= 3
    261240UNION ALL
    262 SELECT month, 'Flight' AS category, FlightNumber AS name, bookings_count AS count FROM MonthlyFlights WHERE rank <= 3
     241SELECT month, 'Flight' AS category, flight_number AS name, bookings_count AS count FROM MonthlyFlights WHERE rank <= 3
    263242UNION ALL
    264243SELECT month, 'Airport' AS category, airport_name AS name, departures_count AS count FROM MonthlyAirports WHERE rank <= 3