Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. select
  2. -- `distinct on` statement is required to exclude duplicate lines with return flights
  3. distinct on (least(depart.arport_code, arrival.airport_code)
  4. , greatest(depart.arport_code, arrival.airport_code))
  5. depart.arport_name
  6. , arrival.airport_name
  7. , 6371 -- Earth radius
  8. * acos(-- sin(latitude_a) * sin(latitude_b)
  9. sin(depart.coordinates[0]) * sin(arriv.coordinates[1])
  10. -- cos(latitude_a) * cos(latitude_b)
  11. + cos(depart.coordinates[0]) * cos(arriv.coordinates[1])
  12. -- cos(longtitude_a - longtitude_b)
  13. * cos(depart.coordinates[1] - arriv.coordinates[1])
  14. ) as fact_range
  15. , craft.range as craft_range
  16. from flights as f
  17. inner join airports_data as depart on depart.airport_code = f.departure_airport
  18. inner join airports_data as arriv on arriv.airport_code = f.arrival_airport
  19. inner join aircrafts_data as craft on craft.aircraft_code = f.aircraft_code
  20. where
  21.  
  22. craft.range > (6371 -- Earth radius
  23. * acos(-- sin(latitude_a) * sin(latitude_b)
  24. sin(depart.coordinates[0]) * sin(arriv.coordinates[1])
  25. -- cos(latitude_a) * cos(latitude_b)
  26. + cos(depart.coordinates[0]) * cos(arriv.coordinates[1])
  27. -- cos(longtitude_a - longtitude_b)
  28. * cos(depart.coordinates[1] - arriv.coordinates[1])
  29. ))
  30. ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement