| | 1057 | |
| | 1058 | |
| | 1059 | |
| | 1060 | |
| | 1061 | |
| | 1062 | |
| | 1063 | |
| | 1064 | == Анализа и оптимизација на `Venue_Occupancy_Report` |
| | 1065 | |
| | 1066 | Овој материјализиран поглед генерира финансиски профил и историја на нарачки за секој корисник, сумирајќи ги направените трошоци на ниво на главна нарачка. Тој нуди брз увид во точниот број на купени ставки, бројот на рефундирани билети како и вкупната сума на вратени пари по нарачка без оптоварување на трансакциските табели. |
| | 1067 | |
| | 1068 | {{{ |
| | 1069 | |
| | 1070 | CREATE MATERIALIZED VIEW "Venue_Occupancy_Report" AS |
| | 1071 | SELECT e.event_id, |
| | 1072 | e.name AS event_name, |
| | 1073 | eh.event_happening_id, |
| | 1074 | eh.event_time, |
| | 1075 | v.name AS venue_name, |
| | 1076 | v.number_of_seats AS total_venue_capacity, |
| | 1077 | COALESCE(stats.sold_count, 0) AS tickets_sold, |
| | 1078 | ROUND((COALESCE(stats.sold_count, 0)::NUMERIC / v.number_of_seats::NUMERIC) * 100, 2) AS occupancy_percentage |
| | 1079 | FROM "Event" e |
| | 1080 | JOIN "Event_Happening" eh ON e.event_id = eh.event_id |
| | 1081 | JOIN "Venue" v ON eh.venue_id = v.venue_id |
| | 1082 | LEFT JOIN ( |
| | 1083 | SELECT t.event_happening_id, COUNT(toi.order_item_id) AS sold_count |
| | 1084 | FROM "Ticket_Order_Item" toi |
| | 1085 | JOIN "Ticket" t ON toi.ticket_id = t.ticket_id |
| | 1086 | GROUP BY t.event_happening_id |
| | 1087 | ) stats ON eh.event_happening_id = stats.event_happening_id |
| | 1088 | GROUP BY e.event_id, e.name, eh.event_happening_id, eh.event_time, v.name, v.number_of_seats, stats.sold_count; |
| | 1089 | |
| | 1090 | }}} |
| | 1091 | |
| | 1092 | Погледот е веќе најоптимално напишан и не треба да се преуредува. |
| | 1093 | |
| | 1094 | ==== 1. Примарен филтер: |
| | 1095 | |
| | 1096 | `event_happening_id` или `venue_name` (за известување за конкретни локации). |
| | 1097 | |
| | 1098 | ==== 2. Случај на употреба: |
| | 1099 | |
| | 1100 | Бизнис извештаи за менаџерите на објектите за следење на „Occupancy Rate“ (процент на исполнетост) на капацитетите. |
| | 1101 | |
| | 1102 | ==== 3. Оптимизација: |
| | 1103 | |
| | 1104 | Овој поглед прави комплексна математичка пресметка (`sold_count / total_venue_capacity`). Материјализацијата тука е клучна бидејќи пресметката не се извршува при секое барање, туку само кога се освежува погледот. |