runtime
10 / 88

lesson 10 Calculations & data quality · intermediate

COUNT, SUM & AVG

Count rows and calculate totals and averages.

the idea

COUNT(*) counts rows; COUNT(column) counts rows where that column is known. SUM adds values and AVG divides the sum by the number of known values. Without GROUP BY, an aggregate query returns one row for the whole table.

Dataset: Mobility

The tables the challenges use, with their first 6 rows. Under each column name: the kind of value it holds, and which table it links to.

trips19 columns · 128,620 rows
trip_idnumber · unique idvendor_idnumber · links to vendorspickup_atdate & timedropoff_atdate & timepassenger_countnumbertrip_distance_milesdecimalrate_code_idnumber · links to rate_codesstore_and_fwd_flagtextpickup_zone_idnumber · links to zonesdropoff_zone_idnumber · links to zonespayment_type_idnumber · links to payment_typesfare_amountdecimaltip_amountdecimaltolls_amountdecimalsurcharge_amountdecimalcongestion_surchargedecimalairport_feedecimalcbd_congestion_feedecimaltotal_amountdecimal
122024-12-31 21:33:432024-12-31 21:39:0021.121N179727.9002.500010.4
222025-01-01 00:01:282025-01-01 00:21:1215.511N249112125.47.476.942.52.50044.81
322025-01-01 00:02:462025-01-01 00:21:2712.981N158162118.45.8502.52.50029.25
422025-01-01 00:04:292025-01-01 00:55:58931.975N132265290020.321000111.32
522025-01-01 00:05:492025-01-01 00:20:0023.451N263107117.74.5402.52.50027.24
622025-01-01 00:06:442025-01-01 00:32:0718.041N132191235.9002.500038.4
trip_idnumber · unique id
1
vendor_idnumber · links to vendors
2
pickup_atdate & time
2024-12-31 21:33:43
dropoff_atdate & time
2024-12-31 21:39:00
passenger_countnumber
2
trip_distance_milesdecimal
1.12
rate_code_idnumber · links to rate_codes
1
store_and_fwd_flagtext
N
pickup_zone_idnumber · links to zones
179
dropoff_zone_idnumber · links to zones
7
payment_type_idnumber · links to payment_types
2
fare_amountdecimal
7.9
tip_amountdecimal
0
tolls_amountdecimal
0
surcharge_amountdecimal
2.5
congestion_surchargedecimal
0
airport_feedecimal
0
cbd_congestion_feedecimal
0
total_amountdecimal
10.4
trip_idnumber · unique id
2
vendor_idnumber · links to vendors
2
pickup_atdate & time
2025-01-01 00:01:28
dropoff_atdate & time
2025-01-01 00:21:12
passenger_countnumber
1
trip_distance_milesdecimal
5.51
rate_code_idnumber · links to rate_codes
1
store_and_fwd_flagtext
N
pickup_zone_idnumber · links to zones
249
dropoff_zone_idnumber · links to zones
112
payment_type_idnumber · links to payment_types
1
fare_amountdecimal
25.4
tip_amountdecimal
7.47
tolls_amountdecimal
6.94
surcharge_amountdecimal
2.5
congestion_surchargedecimal
2.5
airport_feedecimal
0
cbd_congestion_feedecimal
0
total_amountdecimal
44.81
trip_idnumber · unique id
3
vendor_idnumber · links to vendors
2
pickup_atdate & time
2025-01-01 00:02:46
dropoff_atdate & time
2025-01-01 00:21:27
passenger_countnumber
1
trip_distance_milesdecimal
2.98
rate_code_idnumber · links to rate_codes
1
store_and_fwd_flagtext
N
pickup_zone_idnumber · links to zones
158
dropoff_zone_idnumber · links to zones
162
payment_type_idnumber · links to payment_types
1
fare_amountdecimal
18.4
tip_amountdecimal
5.85
tolls_amountdecimal
0
surcharge_amountdecimal
2.5
congestion_surchargedecimal
2.5
airport_feedecimal
0
cbd_congestion_feedecimal
0
total_amountdecimal
29.25
trip_idnumber · unique id
4
vendor_idnumber · links to vendors
2
pickup_atdate & time
2025-01-01 00:04:29
dropoff_atdate & time
2025-01-01 00:55:58
passenger_countnumber
9
trip_distance_milesdecimal
31.97
rate_code_idnumber · links to rate_codes
5
store_and_fwd_flagtext
N
pickup_zone_idnumber · links to zones
132
dropoff_zone_idnumber · links to zones
265
payment_type_idnumber · links to payment_types
2
fare_amountdecimal
90
tip_amountdecimal
0
tolls_amountdecimal
20.32
surcharge_amountdecimal
1
congestion_surchargedecimal
0
airport_feedecimal
0
cbd_congestion_feedecimal
0
total_amountdecimal
111.32
trip_idnumber · unique id
5
vendor_idnumber · links to vendors
2
pickup_atdate & time
2025-01-01 00:05:49
dropoff_atdate & time
2025-01-01 00:20:00
passenger_countnumber
2
trip_distance_milesdecimal
3.45
rate_code_idnumber · links to rate_codes
1
store_and_fwd_flagtext
N
pickup_zone_idnumber · links to zones
263
dropoff_zone_idnumber · links to zones
107
payment_type_idnumber · links to payment_types
1
fare_amountdecimal
17.7
tip_amountdecimal
4.54
tolls_amountdecimal
0
surcharge_amountdecimal
2.5
congestion_surchargedecimal
2.5
airport_feedecimal
0
cbd_congestion_feedecimal
0
total_amountdecimal
27.24
trip_idnumber · unique id
6
vendor_idnumber · links to vendors
2
pickup_atdate & time
2025-01-01 00:06:44
dropoff_atdate & time
2025-01-01 00:32:07
passenger_countnumber
1
trip_distance_milesdecimal
8.04
rate_code_idnumber · links to rate_codes
1
store_and_fwd_flagtext
N
pickup_zone_idnumber · links to zones
132
dropoff_zone_idnumber · links to zones
191
payment_type_idnumber · links to payment_types
2
fare_amountdecimal
35.9
tip_amountdecimal
0
tolls_amountdecimal
0
surcharge_amountdecimal
2.5
congestion_surchargedecimal
0
airport_feedecimal
0
cbd_congestion_feedecimal
0
total_amountdecimal
38.4

first 6 of 128,620 rows · your queries use all of them

worked example

Run these steps in order to see the idea before you write your own query. The step marked “the pattern” is what the challenges ask for. Running the example does not count toward progress.

  1. Look at trip-level numbers. Run this. Each row is one trip with fare, tip, and passenger count.

    step-1.sql
    SELECT trip_id, fare_amount, tip_amount, passenger_count
    FROM trips
    LIMIT 10;
  2. Collapse the table to one summary row. Run this. COUNT and AVG over all rows give totals and averages for the whole trips table.the pattern

    example.sql
    SELECT
      COUNT(*) AS trips,
      ROUND(AVG(trip_distance_miles), 2) AS avg_miles
    FROM trips;

common mistake

COUNT(passenger_count) is smaller than COUNT(*) because flex-fare trips have no recorded passenger count. AVG ignores those trips rather than treating them as zero.

challenge 1

Return trip_count, total_fare and avg_fare for all trips.

Round total_fare and avg_fare to 2 decimals.

what to return

Columns
trip_counttotal_fareavg_fare in this order
Rows
any order
challenge-1.sql
 
To master this lesson, solve both challenges without hints and pass the concept check. 3 of 3 to go.
COUNT, SUM & AVG — Calculations & data quality · Runtime