Knowledge Guide
HomeDatabasesSQL Practice Problems

Weather Type in Each Country

Problem

Table: Countries

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| country_id    | int     |
| country_name  | varchar |
+---------------+---------+
country_id is the primary key (column with unique values) for this table.
Each row of this table contains the ID and the name of one country.

Table: Weather

+---------------+------+
| Column Name   | Type |
+---------------+------+
| country_id    | int  |
| weather_state | int  |
| day           | date |
+---------------+------+
(country_id, day) is the primary key (combination of columns with unique values) for this table.
Each row of this table indicates the weather state in a country for one day.

Problem Definition

Write a solution to find the type of weather in each country for November 2019.

The type of weather is:

Return the result table.

Example

Image
Image

Output

Image
Image

Try It Yourself

java
-- TODO: Write your user queries here

Solution

To solve this problem, we need to determine the type of weather in each country for November 2019, based on the average weather_state values. The solution involves utilizing SQL queries to retrieve and process the necessary information from the given Countries and Weather tables.

Firstly, we employ the JOIN clause to combine data from both tables, linking them through the country_id column. This allows us to access the country names and their corresponding weather states. The JOIN operation is crucial for merging the relevant information from both tables into a single dataset.

Next, we utilize the AND operator in the ON clause to specify additional conditions for the join. Specifically, we filter the data to include only records from November 2019 by checking the year and month of the day column in the Weather table.

After joining and filtering the data, the GROUP BY clause is applied to group the results by country_name. This is essential for calculating the average weather_state for each country.

The AVG function is then used to compute the average weather state within each group, and the results are categorized into different weather types using the CASE statement. If the average weather_state is less than or equal to 15, the weather type is classified as 'Cold'; if it is greater than or equal to 25, the type is 'Hot'; otherwise, it is classified as 'Warm'.

SELECT country_name, CASE WHEN AVG(weather_state) <= 15 THEN 'Cold' WHEN AVG(weather_state) >= 25 THEN 'Hot' ELSE 'Warm' END AS weather_type FROM Countries JOIN Weather ON Countries.country_id = Weather.country_id AND YEAR(day) = '2019' AND MONTH(day) = '11' GROUP BY country_name

Let's break down the query step by step:

Step 1: Filter Data for November 2019

We start by filtering the data from the Weather table for November 2019.

SELECT * FROM Weather WHERE YEAR(day) = '2019' AND MONTH(day) = '11';

Output After Step 1:

+------------+---------------+------------+ | country_id | weather_state | day | +------------+---------------+------------+ | 2 | 15 | 2019-11-01 | | 3 | -2 | 2019-11-10 | | 3 | 0 | 2019-11-11 | | 3 | 3 | 2019-11-12 | | 5 | 16 | 2019-11-07 | | 5 | 18 | 2019-11-09 | | 5 | 21 | 2019-11-23 | | 7 | 25 | 2019-11-28 | | 8 | 25 | 2019-11-05 | | 8 | 27 | 2019-11-15 | | 8 | 31 | 2019-11-25 | +------------+---------------+------------+

Step 2: Calculate Average Weather State

Next, we calculate the average weather_state for each country.

SELECT country_id, AVG(weather_state) AS avg_weather_state FROM Step1 GROUP BY country_id;

Output After Step 2:

+------------+-------------------+ | country_id | avg_weather_state | +------------+-------------------+ | 2 | 15 | | 3 | 0.333 | | 5 | 18.333 | | 7 | 25 | | 8 | 27.667 | +------------+-------------------+

Step 3: Determine Weather Type

Now, we use a CASE statement to determine the weather type for each country based on the average weather_state.

SELECT country_id, CASE WHEN avg_weather_state <= 15 THEN 'Cold' WHEN avg_weather_state >= 25 THEN 'Hot' ELSE 'Warm' END AS weather_type FROM Step2;

Output After Step 3:

+------------+--------------+ | country_id | weather_type | +------------+--------------+ | 2 | Cold | | 3 | Cold | | 5 | Warm | | 7 | Hot | | 8 | Hot | +------------+--------------+

Step 4: Join with Countries Table

Finally, we join the result with the Countries table to get the country names.

SELECT c.country_name, w.weather_type FROM Step3 w JOIN Countries c ON w.country_id = c.country_id;

Final Output:

+--------------+--------------+ | country_name | weather_type | +--------------+--------------+ | USA | Cold | | Australia | Cold | | China | Warm | | Peru | Hot | | Morocco | Hot | +--------------+--------------+
🤖 Don't fully get this? Learn it with Claude

Stuck on Weather Type in Each Country? Open Claude, copy a block below, and it'll teach you this exact concept — visually and interactively.

🎨 Explain it visually

Build the mental picture, not memorization.

I just read a lesson on **Weather Type in Each Country** (Databases) and want to truly understand it. Explain Weather Type in Each Country from first principles using ONE vivid real-world analogy and a visual mental model — draw it as ASCII art or a clear step-by-step diagram — with a concrete example using real numbers. Then ask me one question to check I got the mental picture, and wait for my reply. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🤔 Walk me through it (interactive)

Socratic — adapts to where you're stuck.

Teach me **Weather Type in Each Country** interactively. Ask me ONE guiding question at a time, wait for my answer, and adapt to my confusion — build the idea with me step by step instead of explaining it all at once. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🧪 Quiz me & fix my gaps

Active recall exposes what you missed.

Quiz me on **Weather Type in Each Country** with 5 questions, easy to tricky, ONE at a time. Tell me if each answer is right; at the end, explain clearly what I got wrong and why. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🧠 Make it stick

Intuition + hook + flashcards for long-term memory.

Help me remember **Weather Type in Each Country** for the long term: give the one-sentence intuition, a memorable hook/mnemonic, a tiny worked example, and 3 active-recall flashcards (Q -> A). If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.

📝 My notes