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