| | 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 | }}} |