| 271 | 4. Композитна метрика за дестинација: просечна оцена, процент на ефтини активности, број на резервации. Се користи за рангирање на дестинации. |
| 272 | {{{ |
| 273 | CREATE OR REPLACE FUNCTION destination_score(p_dest INT) |
| 274 | RETURNS FLOAT LANGUAGE plpgsql AS $$ |
| 275 | DECLARE |
| 276 | avg_rating FLOAT; |
| 277 | cheap_percent FLOAT; |
| 278 | total_reservations INT; |
| 279 | score FLOAT; |
| 280 | BEGIN |
| 281 | SELECT AVG(quality) INTO avg_rating FROM review WHERE id_destination = p_dest; |
| 282 | SELECT COUNT(*) * 100.0 / NULLIF((SELECT COUNT(*) FROM activity WHERE id_destination = p_dest),0) |
| 283 | INTO cheap_percent FROM activity WHERE id_destination = p_dest AND amount < 500; |
| 284 | SELECT COUNT(*) INTO total_reservations FROM reservation WHERE id_destination = p_dest; |
| 285 | |
| 286 | score := COALESCE(avg_rating,0)*0.5 + COALESCE(cheap_percent,0)*0.3 + COALESCE(total_reservations,0)*0.2; |
| 287 | RETURN score; |
| 288 | END; |
| 289 | $$; |
| 290 | }}} |
| 291 | |
| 292 | |