| 1 | = Domify |
| 2 | |
| 3 | == Напредни извештаи од базата (SQL и складирани процедури) |
| 4 | |
| 5 | |
| 6 | === 1. Извештај за вкупни приходи на изнајмувачите на недвижности за нивните изнајмени единици како и просечен приход остварен по изнајмена единица во тековната година. |
| 7 | {{{ |
| 8 | SELECT |
| 9 | u.first_name, |
| 10 | u.last_name, |
| 11 | u.email, |
| 12 | u.rating, |
| 13 | lp.is_agent, |
| 14 | COUNT(DISTINCT l.id) AS lease_count, |
| 15 | COUNT(DISTINCT l.tenant_id) AS tenant_count, |
| 16 | COALESCE(SUM(p.amount), 0) AS total_revenue, |
| 17 | ROUND( |
| 18 | CASE WHEN COUNT(DISTINCT l.id) > 0 |
| 19 | THEN COALESCE(SUM(p.amount), 0) / COUNT(DISTINCT l.id) |
| 20 | ELSE 0 |
| 21 | END, 2 |
| 22 | ) AS avg_revenue_per_lease |
| 23 | FROM LandlordProfile lp |
| 24 | JOIN UserD u ON u.id = lp.id |
| 25 | JOIN Lease l ON lp.id = l.landlord_id |
| 26 | LEFT JOIN Payment p |
| 27 | ON p.lease_id = l.id |
| 28 | AND p.payment_date >= date_trunc('year', CURRENT_DATE) |
| 29 | GROUP BY u.id, u.first_name, u.last_name, u.email, u.rating, lp.is_agent |
| 30 | ORDER BY total_revenue DESC; |
| 31 | }}} |
| 32 | |
| 33 | |
| 34 | === 2. Извештај за перформансите на недвижностите по градови: број на имоти, број на издавачки единици, активни единици, остварени приходи за тековната година по град како и просечна кирија по изнајмувачка единица како и остварен приход по објект. |
| 35 | |
| 36 | {{{ |
| 37 | SELECT |
| 38 | a.city, |
| 39 | COUNT(DISTINCT p.id) as total_properties, |
| 40 | COUNT(DISTINCT u.id) as total_units, |
| 41 | COUNT(DISTINCT l.id) as active_leases, |
| 42 | SUM(pay.amount) as total_revenue, |
| 43 | ROUND(AVG(l.rent_amount),2) as avg_rent_per_lease, |
| 44 | ROUND (SUM(pay.amount) / COUNT(DISTINCT p.id),2) as revenue_per_property |
| 45 | FROM Address a |
| 46 | JOIN Property p ON a.id = p.address_id |
| 47 | JOIN Unit u ON p.id = u.property_id |
| 48 | JOIN Listing lst ON u.id = lst.unit_id |
| 49 | JOIN Lease l ON lst.id = l.listing_id |
| 50 | JOIN Payment pay ON l.id = pay.lease_id |
| 51 | WHERE EXTRACT(YEAR FROM pay.payment_date) = EXTRACT(YEAR FROM CURRENT_DATE) |
| 52 | AND pay.status = 'завршено' |
| 53 | GROUP BY a.city |
| 54 | ORDER BY total_revenue DESC; |
| 55 | }}} |