Changes between Version 3 and Version 4 of QueryOptimization


Ignore:
Timestamp:
04/26/26 14:32:40 (6 days ago)
Author:
231027
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • QueryOptimization

    v3 v4  
    11= Оптимизација на прашалници
     2
     3
     4=== `Performer_Events`
     5
     6Овој поглед дава преглед на сите изведувачи и настаните на кои тие учествуваат, заедно со прецизниот термин на нивниот настап.
     7
     8{{{
     9
     10CREATE VIEW "Performer_Events" AS
     11SELECT p.performer_id,
     12       p.name AS performer_name,
     13       e.event_id,
     14       e.name AS event_name,
     15       eh.event_time
     16FROM "Performer" p
     17JOIN "Event_Happening_Performer" ehp ON p.performer_id = ehp.performer_id
     18JOIN "Event_Happening" eh ON ehp.event_happening_id = eh.event_happening_id
     19JOIN "Event" e ON eh.event_id = e.event_id;
     20
     21}}}
     22
     23=== `Venue_Layout`
     24
     25Овој поглед ја прикажува целосната структура на секој објект (сала), поврзувајќи ги поединечните седишта со соодветните сектори и името на објектот.
     26
     27{{{
     28
     29CREATE VIEW "Venue_Layout" AS
     30SELECT v.venue_id,
     31       v.name AS venue_name,
     32       s.section_id,
     33       s.name AS section_name,
     34       st.seat_id,
     35       st.seat_number
     36FROM "Venue" v
     37JOIN "Section" s ON v.venue_id = s.venue_id
     38JOIN "Seat" st ON s.section_id = st.section_id;
     39
     40}}}
     41
     42=== `User_Tickets`
     43
     44Овој поглед ја прикажува целосната структура на секој објект (сала), поврзувајќи ги поединечните седишта со соодветните сектори и името на објектот.
     45
     46{{{
     47
     48CREATE VIEW "User_Tickets" AS
     49SELECT u.user_id,
     50       u.username,
     51       t.ticket_id,
     52       tp.purchase_id,
     53       tp.qr_code,
     54       tr.refund_id,
     55       tr.refund_time
     56FROM "User" u
     57JOIN "Ticket_Purchase" tp ON u.user_id = tp.user_id
     58JOIN "Ticket" t ON tp.ticket_id = t.ticket_id
     59LEFT JOIN "Ticket_Refund" tr ON tp.purchase_id = tr.purchase_id;
     60
     61}}}
     62
     63=== `Event_User_Ratings`
     64
     65Овој поглед овозможува детален пристап до поединечните коментари и оценки што секој корисник ги оставил за одреден термин на настан.
     66
     67{{{
     68
     69CREATE VIEW "Event_User_Ratings" AS
     70SELECT eh.event_happening_id,
     71       e.event_id,
     72       e.name AS event_name,
     73       u.user_id,
     74       u.username,
     75       ehr.rating_id,
     76       ehr.rating,
     77       ehr.comment
     78FROM "Event" e
     79JOIN "Event_Happening" eh ON e.event_id = eh.event_id
     80JOIN "Event_Happening_Rating" ehr ON eh.event_happening_id = ehr.event_happening_id
     81JOIN "User" u ON ehr.user_id = u.user_id;
     82
     83}}}
     84
     85=== `Event_Overall_Ratings`
     86
     87Овој поглед врши статистичка анализа на задоволството на публиката преку пресметување на просечната оцена и вкупниот број на рецензии за секој поединечен настан.
     88
     89{{{
     90
     91CREATE VIEW "Event_Overall_Ratings" AS
     92SELECT
     93    e.event_id,
     94    e.name AS event_name,
     95    eh.event_happening_id,
     96    eh.event_time,
     97    COUNT(ehr.rating_id) AS total_reviews,
     98    ROUND(AVG(ehr.rating), 2) AS average_rating
     99FROM "Event" e
     100JOIN "Event_Happening" eh ON e.event_id = eh.event_id
     101JOIN "Event_Happening_Rating" ehr ON eh.event_happening_id = ehr.event_happening_id
     102GROUP BY e.event_id, e.name, eh.event_happening_id, eh.event_time;
     103
     104}}}
     105
     106=== `Event_Financial_Summary`
     107
     108Овој поглед ги сумира финансиските резултати за секој настан, прикажувајќи го вкупниот број на продадени билети, нето приходот по одбивање на рефундациите и посебно издвоената заработка од административните такси при враќање на влезниците.
     109
     110{{{
     111
     112CREATE VIEW "Event_Financial_Summary" AS
     113SELECT
     114    e.event_id,
     115    e.name AS event_name,
     116    eh.event_happening_id,
     117    eh.event_time,
     118    COUNT(tp.purchase_id) AS total_tickets_sold,
     119   
     120    -- total revenue
     121    SUM(tp.purchase_amount) - SUM(CASE WHEN tr.refund_amount IS NOT NULL THEN tr.refund_amount ELSE 0 END) AS net_revenue,
     122   
     123    -- refund taxes
     124    SUM(CASE WHEN tr.refund_id IS NOT NULL THEN tp.purchase_amount - tr.refund_amount ELSE 0 END) AS refund_tax_profit
     125
     126FROM "Event" e
     127JOIN "Event_Happening" eh ON e.event_id = eh.event_id
     128JOIN "Ticket" t ON eh.event_happening_id = t.event_happening_id
     129JOIN "Ticket_Purchase" tp ON t.ticket_id = tp.ticket_id
     130LEFT JOIN "Ticket_Refund" tr ON tp.purchase_id = tr.purchase_id
     131GROUP BY e.event_id, e.name, eh.event_happening_id, eh.event_time;
     132
     133}}}