Changes between Version 8 and Version 9 of AdvancedReports


Ignore:
Timestamp:
09/24/25 02:01:02 (3 weeks ago)
Author:
223270
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReports

    v8 v9  
    2323Дополнително, за да се прикажат различни категории на настани за одредена дестинација. За пример, доколку сакате да ги видите сите видови настани што се одржуваат во Охрид:
    2424{{{
    25 SELECT DISTINCT e.event_type
     25SELECT DISTINCT e.event_type AS event_type
    2626FROM travel_sage.event e
    2727JOIN travel_sage.destination d ON e.id_destination = d.id_destination
    28 WHERE d.location_name = 'Охрид';
     28WHERE d.location_name = 'Ohrid';
    2929}}}
    3030
     
    3333Овде се зема просечниот квалитет на рецензиите за секоја дестинација и ги прикажува првите 10 дестинации со највисок квалитет на рецензии. Корисно за корисниците што сакаат да ја изберат најдобро оценетата дестинација.
    3434{{{
    35 SELECT d.location_name, AVG(r.quality) AS average_quality
     35SELECT d.location_name AS destination_name,
     36       AVG(r.quality) AS average_quality
    3637FROM travel_sage.destination d
    3738JOIN travel_sage.review r ON d.id_destination = r.id_destination
     
    4546Приказ на дестинациите и брои колку активности постојат во различни ценовни групи (пример под 20, под 50, под 100 евра). Тоа му помага на корисникот да избере дестинација според неговиот буџет и преференции за активности.
    4647{{{
    47 SELECT d.location_name,
     48SELECT d.location_name AS destination_name,
    4849       SUM(CASE WHEN a.amount < 20 THEN 1 ELSE 0 END) AS activities_under20,
    4950       SUM(CASE WHEN a.amount < 50 THEN 1 ELSE 0 END) AS activities_under50,
     
    5960Се прикажуваат дестинации со евтини активности.
    6061{{{
    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 procent_efini_aktivnosti
     62SELECT 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
    6566FROM travel_sage.destination d
    6667JOIN travel_sage.activity a ON d.id_destination = a.id_destination
    6768GROUP BY d.location_name
    6869HAVING COUNT(a.id_activity) > 0
    69 ORDER BY procent_efini_aktivnosti DESC;
     70ORDER BY percent_cheap_activities DESC; DESC;
    7071}}}
    7172
     
    7475Најактивни корисници т.е. оние кои имаат напишано најголем број на рецензии.
    7576{{{
    76 SELECT u.id_user, COUNT(r.id_review) AS broj_recenzii
     77SELECT u.id_user AS user_id,
     78       COUNT(r.id_review) AS review_count
    7779FROM travel_sage.users u
    7880JOIN travel_sage.review r ON u.id_user = r.id_user
    7981GROUP BY u.id_user
    80 ORDER BY broj_recenzii DESC
     82ORDER BY review_count DESC
    8183LIMIT 10;
    8284}}}
    8385
    8486
    85 === Најисплатливи пакети (Best value for money)
     87=== Најисплатливи пакети (Best value for per day)
    8688Пресметување на цената по ден за пакети, што помага да се дознае кој пакет има најдобра вредност според сумата. Во случај да има пакет од 20 евра за 1 ден или пакет од 50 евра за 1 недела, би можело да се прикаже која опција е најисплатлива.
    8789{{{
    88 SELECT p.package_name, (p.price / GREATEST(DATE_PART('day', p.end_date - p.start_date), 1)) AS cena_po_den
     90SELECT p.package_name,
     91       (p.price / GREATEST(DATE_PART('day', p.end_date - p.start_date), 1)) AS price_per_day
    8992FROM travel_sage.package p
    90 ORDER BY cena_po_den ASC
     93ORDER BY price_per_day ASC
    9194LIMIT 1;
    9295}}}
     
    9699Помага да се следи трендот на резервации преку времето.
    97100{{{
    98 SELECT DATE_TRUNC('month', r.time_point) AS mesec, COUNT(r.id_reservation) AS broj_rezervacii
     101SELECT DATE_TRUNC('month', r.time_point) AS month,
     102       COUNT(r.id_reservation) AS reservation_count
    99103FROM travel_sage.reservation r
    100 GROUP BY mesec
    101 ORDER BY mesec;
     104GROUP BY month
     105ORDER BY month;
    102106}}}
    103107
     
    106110Покажување на новорегистрираните корисници по месец. Овозможува да се види растот на бројот на корисници во различни месеци.
    107111{{{
    108 SELECT DATE_TRUNC('month', u.birth_date) AS mesec, COUNT(u.id_user) AS broj_novi_korisnici
     112SELECT DATE_TRUNC('month', u.birth_date) AS month,
     113       COUNT(u.id_user) AS new_user_count
    109114FROM travel_sage.users u
    110 GROUP BY mesec
    111 ORDER BY mesec;
     115GROUP BY month
     116ORDER BY month;
    112117}}}
    113118
     
    116121Ги брои пакетите што се резервирани по месец. Можност за следење на популарноста на различни пакети во текот на годината.
    117122{{{
    118 SELECT DATE_TRUNC('month', p.start_date) AS mesec, COUNT(pr.id_package) AS broj_paketi
     123SELECT DATE_TRUNC('month', p.start_date) AS month,
     124       COUNT(pr.id_package) AS reserved_package_count
    119125FROM travel_sage.package p
    120126JOIN travel_sage.package_reservation pr ON p.id_package = pr.id_package
    121 GROUP BY mesec
    122 ORDER BY mesec;
     127GROUP BY month
     128ORDER BY month;
    123129}}}
    124130
     
    127133Корисно е за да се согледа колку настани се организирани секој месец.
    128134{{{
    129 SELECT DATE_TRUNC('month', e.start_date) AS mesec, COUNT(e.id_event) AS broj_nastani
     135SELECT DATE_TRUNC('month', e.start_date) AS month,
     136       COUNT(e.id_event) AS event_count
    130137FROM travel_sage.event e
    131 GROUP BY mesec
    132 ORDER BY mesec;
     138GROUP BY month
     139ORDER BY month;
    133140}}}
    134141
     
    137144Овде е прикажана бројката на активности по категорија, со цел да се утврди која активност е најпопуларна во текот на месецот.
    138145{{{
    139 SELECT DATE_TRUNC('month', r.time_point) AS mesec, a.category, COUNT(a.id_activity) AS broj_aktivnosti
     146SELECT DATE_TRUNC('month', r.time_point) AS month,
     147       a.category AS activity_category,
     148       COUNT(a.id_activity) AS activity_count
    140149FROM travel_sage.reservation r
    141150JOIN travel_sage.activity_reservation ar ON r.id_reservation = ar.id_reservation
    142151JOIN travel_sage.activity a ON ar.id_activity = a.id_activity
    143 GROUP BY mesec, a.category
    144 ORDER BY mesec, broj_aktivnosti DESC;
     152GROUP BY month, a.category
     153ORDER BY month, activity_count DESC;
    145154}}}
    146155
     
    149158Статистика за секој корисник по месец, вклучувајќи број на резервации и активности. Така, се гледа активноста на корисниците и популарноста на нивните активности.
    150159{{{
    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
     160SELECT 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
    154164FROM travel_sage.users u
    155165JOIN travel_sage.reservation r ON u.id_user = r.id_user
    156166LEFT JOIN travel_sage.activity_reservation ar ON r.id_reservation = ar.id_reservation
    157 GROUP BY mesec, u.id_user
    158 ORDER BY mesec, broj_rezervacii DESC;
     167GROUP BY month, u.id_user
     168ORDER BY month, reservation_count DESC;
    159169}}}
    160170
     
    162172=== Просечен попуст на премиум корисници
    163173{{{
    164 SELECT AVG(pu.discount) AS prosek_popust
     174SELECT AVG(pu.discount) AS average_discount
    165175FROM premium pu;
    166176}}}