Changes between Version 1 and Version 2 of AdvancedReports


Ignore:
Timestamp:
06/26/25 23:42:13 (10 days ago)
Author:
221012
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReports

    v1 v2  
    5454ORDER BY total_revenue DESC;
    5555}}}
     56
     57=== 3. Извештај за процент на изнајмени недвижности во однос на објавени огласи за секоја година.
     58{{{
     59WITH total_listings AS (
     60    SELECT
     61        EXTRACT(YEAR FROM available_from) AS year,
     62        COUNT(*) AS listing_count
     63    FROM Listing
     64    GROUP BY year
     65),
     66converted_listings AS (
     67    SELECT
     68        EXTRACT(YEAR FROM l.start_date) AS year,
     69        COUNT(DISTINCT li.id) AS converted
     70    FROM Lease l
     71    JOIN Listing li ON l.listing_id = li.id
     72    GROUP BY year
     73)
     74SELECT
     75    tl.year,
     76    tl.listing_count,
     77    COALESCE(cl.converted, 0) AS converted,
     78    ROUND(100.0 * COALESCE(cl.converted, 0) / tl.listing_count, 2) AS conversion_rate
     79FROM total_listings tl
     80LEFT JOIN converted_listings cl ON tl.year = cl.year
     81ORDER BY tl.year;
     82}}}
     83
     84
     85=== 4. Извештај за раст на приходи (извршени успешни плаќања за изнајмувања) за претходна и тековна година  за секој град изразена во проценти.
     86{{{
     87
     88WITH yearly_income AS (
     89    SELECT
     90        a.city,
     91        EXTRACT(YEAR FROM p.payment_date) AS year,
     92        SUM(p.amount) AS total_revenue
     93    FROM Payment p
     94    JOIN Lease l ON l.id = p.lease_id
     95    JOIN Listing li ON li.id = l.listing_id
     96    JOIN Unit u ON li.unit_id = u.id
     97    JOIN Property pr ON u.property_id = pr.id
     98    JOIN Address a ON pr.address_id = a.id
     99    WHERE p.status = 'завршено'
     100    GROUP BY a.city, year
     101),
     102diffs AS (
     103    SELECT
     104        curr.city,
     105        curr.total_revenue AS this_year,
     106        prev.total_revenue AS last_year,
     107        ROUND(((curr.total_revenue - prev.total_revenue) / NULLIF(prev.total_revenue, 0)) * 100, 2) AS growth_percent
     108    FROM yearly_income curr
     109    JOIN yearly_income prev ON prev.city = curr.city AND curr.year = prev.year + 1
     110    WHERE curr.year = EXTRACT(YEAR FROM CURRENT_DATE)
     111)
     112SELECT *
     113FROM diffs
     114ORDER BY growth_percent DESC;
     115
     116}}}