| 56 | |
| 57 | === 3. Извештај за процент на изнајмени недвижности во однос на објавени огласи за секоја година. |
| 58 | {{{ |
| 59 | WITH 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 | ), |
| 66 | converted_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 | ) |
| 74 | SELECT |
| 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 |
| 79 | FROM total_listings tl |
| 80 | LEFT JOIN converted_listings cl ON tl.year = cl.year |
| 81 | ORDER BY tl.year; |
| 82 | }}} |
| 83 | |
| 84 | |
| 85 | === 4. Извештај за раст на приходи (извршени успешни плаќања за изнајмувања) за претходна и тековна година за секој град изразена во проценти. |
| 86 | {{{ |
| 87 | |
| 88 | WITH 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 | ), |
| 102 | diffs 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 | ) |
| 112 | SELECT * |
| 113 | FROM diffs |
| 114 | ORDER BY growth_percent DESC; |
| 115 | |
| 116 | }}} |