Skip to content
Advertisement

How to find the average distance between the locations

I have a table with source, destination and distance between the locations like as below

enter image description here

i want to calculate average distance between the locations like, for example if we take A to B route 1: 21 miles, route 2: 28 miles, route 3: 19 miles I am expecting results: A to B –> 22.66 miles enter image description here Thanks

Advertisement

Answer

Below is for BigQuery Standard SQL

#standardSQL
SELECT 
  LEAST(source, destination) source, 
  GREATEST(source, destination) destination, 
  AVG(distance) distance 
FROM `project.dataset.table`
GROUP BY source, destination

You can test, play with above using sample data from your question as in example below

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'a' source, 'b' destination, 21 distance UNION ALL
  SELECT 'b', 'a', 28 UNION ALL
  SELECT 'a', 'b', 19 UNION ALL
  SELECT 'c', 'd', 15 UNION ALL
  SELECT 'c', 'd', 17 UNION ALL
  SELECT 'd', 'c', 16.5 UNION ALL
  SELECT 'd', 'c', 18 
)
SELECT 
  LEAST(source, destination) source, 
  GREATEST(source, destination) destination, 
  AVG(distance) distance 
FROM `project.dataset.table`
GROUP BY source, destination

with result

Row source  destination distance     
1   a       b           22.666666666666668   
2   c       d           16.625   
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement