Advanced: 08 Calculate site coverage area.sql

File 08 Calculate site coverage area.sql, 716 bytes (added by 231139, 10 days ago)
Line 
1CREATE OR REPLACE FUNCTION public.calculate_site_coverage_area_sq_km(
2 p_site_id bigint
3)
4RETURNS numeric
5LANGUAGE sql
6STABLE
7STRICT
8AS $$
9 SELECT round(
10 (
11 ST_Area(ST_Union(cz.coverage_area)::geography)
12 / 1000000.0
13 )::numeric,
14 3
15 )
16 FROM public.cell_towers ct
17 JOIN public.tower_sectors ts ON ts.tower_id = ct.tower_id
18 JOIN public.coverage_zones cz ON cz.sector_id = ts.sector_id
19 WHERE ct.site_id = p_site_id
20 AND cz.coverage_area IS NOT NULL;
21$$;
22
23COMMENT ON FUNCTION public.calculate_site_coverage_area_sq_km IS
24 'Returns the unioned coverage area for one network site in square kilometres.';