A. More Sample Queries
 
Share this page                  
More Sample Queries
The following table contains additional queries you can run against the ontimedb or demodb databases.
Copy the commands from the SQL column and paste them into the CLI or a Director query document. End each command with \g.
Description
SQL
Count of all the rows
SELECT count(*) FROM ontime\g
Number of flights per year
SELECT year,count(*) as c1 from ontime group by YEAR;\g
Percentage of delays for each carrier for 2016 year
SELECT t.carrier, c, c2, c*1000/c2 as c3 FROM (SELECT carrier, count(*) AS c FROM ontime WHERE DepDelay>10 AND Year=2016 GROUP BY carrier) t JOIN (SELECT carrier, count(*) AS c2 FROM ontime WHERE Year=2016 GROUP BY carrier) t2 ON (t.Carrier=t2.Carrier) ORDER BY c3 DESC;\g
Percent of flights delayed more than 10 minutes per year
SELECT t.year, c1/c2 FROM (select year,count(*)*1000 as c1 from ontime WHERE DepDelay>10 GROUP BY Year) t JOIN (select year,count(*) as c2 from ontime GROUP BY year) t2 ON (t.year=t2.year);\g
Count of delays per airport for years 2010–2016
SELECT Origin, count(*) AS c FROM ontime WHERE DepDelay>10 AND Year BETWEEN 2010 AND 2016 GROUP BY Origin ORDER BY c DESC fetch first 10 rows only;\g
Cities with the most flights in 2016
SELECT top 10 origincityname as City, count(*) as Num_of_flights FROM ontime WHERE Year = 2016 GROUP BY origincityname ORDER BY Num_of_flights DESC;\g
Top 10 flights with biggest average delays (a flight is defined by the carrier, departure airport, and destination)
SELECT c.carrier, origin + ' (' + origincityname + ')' AS origin, dest + ' (' + destcityname + ')' AS dest, avg(arrdelayminutes) AS TotalArrivalDelay, avg(carrierdelay) as carrierdelay, avg(weatherdelay) AS weatherdelay, avg(nasdelay) AS nasdelay, avg(SecurityDelay) SecurityDelay, avg(LateAircraftDelay) LateAircraftDelay FROM ontime o LEFT JOIN carriers c ON o.carrier=c.ccode WHERE o.ArrDelay > 10 AND o.Cancelled <> 1 AND o.year = 2016 GROUP BY 1,2,3 ORDER BY 4 DESC FETCH FIRST 50 ROWS ONLY;\g
Percentage of a flight time when the airplane left from the gate but is not in flight vs. total duration, per airline in 2016
SELECT o.carrier, c.carrier, 1- avg(airtime)/ avg (ActualElapsedTime) AS pct_time_not_in_flight FROM ontime o LEFT JOIN carriers c ON o.carrier=c.ccode where year=2016 group by 1,2 order by 3 DESC;\g
What cities are served by the most other cities
SELECT top 10 destcityname, count(distinct origincityname) from ontime where year = 2016 group by 1 order by 2 desc;\g
Top 10 markets with most destinations
SELECT ct.origincitymarketid , LISTAGG(DISTINCT c.origincityname, '; ') WITHIN GROUP (ORDER BY c.origincityname) as originarea,count(*) AS num_of_destinations FROM ( SELECT origincitymarketid, destcitymarketid FROM ontime WHERE year = 2016 GROUP BY 1,2) ct JOIN ( SELECT origincitymarketid, origincityname FROM ontime GROUP BY 1,2) c ON c.origincitymarketid = ct.origincitymarketid GROUP BY 1 ORDER BY 3 DESC FETCH FIRST 10 ROWS ONLY;\g
Days of week with most total flights over several years
SELECT DayOfWeek, count(*) AS c FROM ontime WHERE Year BETWEEN 2000 AND 2008 GROUP BY DayOfWeek ORDER BY c DESC;\g
Days of week with most delays over several years
SELECT DayOfWeek, count(*) AS c FROM ontime WHERE DepDelay>10 AND Year BETWEEN 2000 AND 2008 GROUP BY DayOfWeek ORDER BY c DESC;\g
Carrier with most delays in one year
SELECT carrier, count(*) FROM ontime WHERE DepDelay>10 AND Year=2007 GROUP BY carrier ORDER BY 2 DESC;\g
Carrier with the most percentage delays in one year
WITH t AS (SELECT carrier, count(*) AS c FROM ontime WHERE DepDelay>10 AND Year=2007 GROUP BY carrier), t2 AS (SELECT carrier, count(*) AS c2 FROM ontime WHERE Year=2007 GROUP BY carrier) SELECT t.carrier, c, c2, c*1000/c2 as c3 FROM t JOIN t2 ON (t.Carrier=t2.Carrier) ORDER BY c3 DESC;\g
Carrier with the most percentage delays in multiple years
WITH t AS (SELECT carrier, count(*) AS c FROM ontime WHERE DepDelay>10 AND Year between 2000 and 2008 GROUP BY carrier), t2 AS (SELECT carrier, count(*) AS c2 FROM ontime WHERE Year between 2000 and 2008 GROUP BY carrier) SELECT t.carrier, c, c2, c*1000/c2 as c3 FROM t JOIN t2 ON (t.Carrier=t2.Carrier) ORDER BY c3 DESC;\g
Running total of flights over the years by carrier
WITH t AS (SELECT carrier, year,count(*) cnt FROM ontime GROUP BY carrier, year) SELECT carrier, year, cnt, sum(cnt) OVER (PARTITION BY carrier ORDER BY carrier, year ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS "Running Total" FROM t FETCH FIRST 10 ROWS ONLY;\g