Changes between Version 8 and Version 9 of AdvancedReports
- Timestamp:
- 09/24/25 02:01:02 (3 weeks ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AdvancedReports
v8 v9 23 23 Дополнително, за да се прикажат различни категории на настани за одредена дестинација. За пример, доколку сакате да ги видите сите видови настани што се одржуваат во Охрид: 24 24 {{{ 25 SELECT DISTINCT e.event_type 25 SELECT DISTINCT e.event_type AS event_type 26 26 FROM travel_sage.event e 27 27 JOIN travel_sage.destination d ON e.id_destination = d.id_destination 28 WHERE d.location_name = ' Охрид';28 WHERE d.location_name = 'Ohrid'; 29 29 }}} 30 30 … … 33 33 Овде се зема просечниот квалитет на рецензиите за секоја дестинација и ги прикажува првите 10 дестинации со највисок квалитет на рецензии. Корисно за корисниците што сакаат да ја изберат најдобро оценетата дестинација. 34 34 {{{ 35 SELECT d.location_name, AVG(r.quality) AS average_quality 35 SELECT d.location_name AS destination_name, 36 AVG(r.quality) AS average_quality 36 37 FROM travel_sage.destination d 37 38 JOIN travel_sage.review r ON d.id_destination = r.id_destination … … 45 46 Приказ на дестинациите и брои колку активности постојат во различни ценовни групи (пример под 20, под 50, под 100 евра). Тоа му помага на корисникот да избере дестинација според неговиот буџет и преференции за активности. 46 47 {{{ 47 SELECT d.location_name ,48 SELECT d.location_name AS destination_name, 48 49 SUM(CASE WHEN a.amount < 20 THEN 1 ELSE 0 END) AS activities_under20, 49 50 SUM(CASE WHEN a.amount < 50 THEN 1 ELSE 0 END) AS activities_under50, … … 59 60 Се прикажуваат дестинации со евтини активности. 60 61 {{{ 61 SELECT d.location_name ,62 COUNT(a.id_activity) AS vkupno_aktivnosti,63 SUM(CASE WHEN a.amount < 20 THEN 1 ELSE 0 END) AS efini_aktivnosti,64 (SUM(CASE WHEN a.amount < 20 THEN 1 ELSE 0 END) * 100.0 / COUNT(a.id_activity)) AS p rocent_efini_aktivnosti62 SELECT d.location_name AS destination_name, 63 COUNT(a.id_activity) AS total_activities, 64 SUM(CASE WHEN a.amount < 20 THEN 1 ELSE 0 END) AS cheap_activities, 65 (SUM(CASE WHEN a.amount < 20 THEN 1 ELSE 0 END) * 100.0 / COUNT(a.id_activity)) AS percent_cheap_activities 65 66 FROM travel_sage.destination d 66 67 JOIN travel_sage.activity a ON d.id_destination = a.id_destination 67 68 GROUP BY d.location_name 68 69 HAVING COUNT(a.id_activity) > 0 69 ORDER BY p rocent_efini_aktivnostiDESC;70 ORDER BY percent_cheap_activities DESC; DESC; 70 71 }}} 71 72 … … 74 75 Најактивни корисници т.е. оние кои имаат напишано најголем број на рецензии. 75 76 {{{ 76 SELECT u.id_user, COUNT(r.id_review) AS broj_recenzii 77 SELECT u.id_user AS user_id, 78 COUNT(r.id_review) AS review_count 77 79 FROM travel_sage.users u 78 80 JOIN travel_sage.review r ON u.id_user = r.id_user 79 81 GROUP BY u.id_user 80 ORDER BY broj_recenziiDESC82 ORDER BY review_count DESC 81 83 LIMIT 10; 82 84 }}} 83 85 84 86 85 === Најисплатливи пакети (Best value for money)87 === Најисплатливи пакети (Best value for per day) 86 88 Пресметување на цената по ден за пакети, што помага да се дознае кој пакет има најдобра вредност според сумата. Во случај да има пакет од 20 евра за 1 ден или пакет од 50 евра за 1 недела, би можело да се прикаже која опција е најисплатлива. 87 89 {{{ 88 SELECT p.package_name, (p.price / GREATEST(DATE_PART('day', p.end_date - p.start_date), 1)) AS cena_po_den 90 SELECT p.package_name, 91 (p.price / GREATEST(DATE_PART('day', p.end_date - p.start_date), 1)) AS price_per_day 89 92 FROM travel_sage.package p 90 ORDER BY cena_po_denASC93 ORDER BY price_per_day ASC 91 94 LIMIT 1; 92 95 }}} … … 96 99 Помага да се следи трендот на резервации преку времето. 97 100 {{{ 98 SELECT DATE_TRUNC('month', r.time_point) AS mesec, COUNT(r.id_reservation) AS broj_rezervacii 101 SELECT DATE_TRUNC('month', r.time_point) AS month, 102 COUNT(r.id_reservation) AS reservation_count 99 103 FROM travel_sage.reservation r 100 GROUP BY m esec101 ORDER BY m esec;104 GROUP BY month 105 ORDER BY month; 102 106 }}} 103 107 … … 106 110 Покажување на новорегистрираните корисници по месец. Овозможува да се види растот на бројот на корисници во различни месеци. 107 111 {{{ 108 SELECT DATE_TRUNC('month', u.birth_date) AS mesec, COUNT(u.id_user) AS broj_novi_korisnici 112 SELECT DATE_TRUNC('month', u.birth_date) AS month, 113 COUNT(u.id_user) AS new_user_count 109 114 FROM travel_sage.users u 110 GROUP BY m esec111 ORDER BY m esec;115 GROUP BY month 116 ORDER BY month; 112 117 }}} 113 118 … … 116 121 Ги брои пакетите што се резервирани по месец. Можност за следење на популарноста на различни пакети во текот на годината. 117 122 {{{ 118 SELECT DATE_TRUNC('month', p.start_date) AS mesec, COUNT(pr.id_package) AS broj_paketi 123 SELECT DATE_TRUNC('month', p.start_date) AS month, 124 COUNT(pr.id_package) AS reserved_package_count 119 125 FROM travel_sage.package p 120 126 JOIN travel_sage.package_reservation pr ON p.id_package = pr.id_package 121 GROUP BY m esec122 ORDER BY m esec;127 GROUP BY month 128 ORDER BY month; 123 129 }}} 124 130 … … 127 133 Корисно е за да се согледа колку настани се организирани секој месец. 128 134 {{{ 129 SELECT DATE_TRUNC('month', e.start_date) AS mesec, COUNT(e.id_event) AS broj_nastani 135 SELECT DATE_TRUNC('month', e.start_date) AS month, 136 COUNT(e.id_event) AS event_count 130 137 FROM travel_sage.event e 131 GROUP BY m esec132 ORDER BY m esec;138 GROUP BY month 139 ORDER BY month; 133 140 }}} 134 141 … … 137 144 Овде е прикажана бројката на активности по категорија, со цел да се утврди која активност е најпопуларна во текот на месецот. 138 145 {{{ 139 SELECT DATE_TRUNC('month', r.time_point) AS mesec, a.category, COUNT(a.id_activity) AS broj_aktivnosti 146 SELECT DATE_TRUNC('month', r.time_point) AS month, 147 a.category AS activity_category, 148 COUNT(a.id_activity) AS activity_count 140 149 FROM travel_sage.reservation r 141 150 JOIN travel_sage.activity_reservation ar ON r.id_reservation = ar.id_reservation 142 151 JOIN travel_sage.activity a ON ar.id_activity = a.id_activity 143 GROUP BY m esec, a.category144 ORDER BY m esec, broj_aktivnostiDESC;152 GROUP BY month, a.category 153 ORDER BY month, activity_count DESC; 145 154 }}} 146 155 … … 149 158 Статистика за секој корисник по месец, вклучувајќи број на резервации и активности. Така, се гледа активноста на корисниците и популарноста на нивните активности. 150 159 {{{ 151 SELECT DATE_TRUNC('month', r.time_point) AS mesec, u.first_name, u.last_name, 152 COUNT(DISTINCT r.id_reservation) AS broj_rezervacii, 153 COUNT(DISTINCT ar.id_activity) AS broj_aktivnosti 160 SELECT DATE_TRUNC('month', r.time_point) AS month, 161 u.first_name, u.last_name, 162 COUNT(DISTINCT r.id_reservation) AS reservation_count, 163 COUNT(DISTINCT ar.id_activity) AS activity_count 154 164 FROM travel_sage.users u 155 165 JOIN travel_sage.reservation r ON u.id_user = r.id_user 156 166 LEFT JOIN travel_sage.activity_reservation ar ON r.id_reservation = ar.id_reservation 157 GROUP BY m esec, u.id_user158 ORDER BY m esec, broj_rezervaciiDESC;167 GROUP BY month, u.id_user 168 ORDER BY month, reservation_count DESC; 159 169 }}} 160 170 … … 162 172 === Просечен попуст на премиум корисници 163 173 {{{ 164 SELECT AVG(pu.discount) AS prosek_popust174 SELECT AVG(pu.discount) AS average_discount 165 175 FROM premium pu; 166 176 }}}