DB Quacks SQL Tutorial · Chapter 7
Endgame - Data Assembly
Festival day arrives! All your Pondville friends gather at the floating festival stage. Duckbert! calls Professor Shellbert. Ducks are arriving from everywhere - families reuniting, interdimensional visitors, cloud communities! We need perfect timing coordination. The Doctor Duck materializes with festival schedules. Match everyones current location with migration history for perfect arrival timi…
Your task
Use ASOF JOIN to create perfect timing by matching current duck locations from 'data/duck_locations.csv' with their migration history from 'data/migration_history.parquet'. You will be finding the most recent migration record for each duck.
Hint
Look for a special type of join that can match records based on time relationships, finding the most recent record that occurred before or at a given time.
Expected result
A table showing current duck locations matched with their most recent migration records.
Tables
duck_diaries (10 rows)
| column | type |
|---|---|
diary_id | BIGINT |
duck_id | BIGINT |
entry_date | DATE |
diary_text | VARCHAR |
mood | VARCHAR |
duck_surveys (5000 rows)
| column | type |
|---|---|
survey_id | BIGINT |
duck_id | BIGINT |
age | BIGINT |
favorite_food | VARCHAR |
favorite_pond | BIGINT |
swimming_rating | BIGINT |
migration_preference | VARCHAR |
social_behavior | VARCHAR |
health_status | VARCHAR |
activity_level | VARCHAR |
survey_date | DATE |
survey_location | BIGINT |
ducks (15 rows)
| column | type |
|---|---|
id | BIGINT |
name | VARCHAR |
age | BIGINT |
species | VARCHAR |
birth_date | DATE |
arrival_date | DATE |
ponds (3 rows)
| column | type |
|---|---|
pond_id | BIGINT |
pond_name | VARCHAR |
location_lat | DOUBLE |
location_lng | DOUBLE |
capacity | BIGINT |
features | VARCHAR[] |
amenities | VARCHAR[] |
Files
data/duck_locations.csv (15 rows)
| column | type |
|---|---|
duck_id | BIGINT |
current_date | DATE |
duck_latitude | DOUBLE |
duck_longitude | DOUBLE |
last_seen | TIMESTAMP |
data/migration_history.parquet (20 rows)
| column | type |
|---|---|
duck_id | BIGINT |
migration_date | DATE |
destination | VARCHAR |
distance_km | DOUBLE |
season | VARCHAR |
Database: https://dbquacks.com/data/databases/tutorial.duckdb
This page as markdown: https://dbquacks.com/tutorial/38.md