📖 Scenario: You are managing a Snowflake cloud data platform. You want to create a simple strategy to select the best warehouse for running queries based on their size and availability.
🎯 Goal: Build a Snowflake SQL script that defines warehouses with their sizes and statuses, sets a minimum size threshold, selects warehouses that meet the threshold and are available, and finally chooses the warehouse with the smallest size that meets these conditions.
📋 What You'll Learn
Create a table variable called warehouses with columns name, size, and status and insert exact rows
Create a variable called min_size with the value 'MEDIUM'
Write a query that selects warehouses with size greater than or equal to min_size and status equal to 'AVAILABLE'
Select the warehouse with the smallest size from the filtered results
💡 Why This Matters
🌍 Real World
Selecting the right warehouse in Snowflake helps optimize query performance and cost by choosing the best available compute resource.
💼 Career
Cloud engineers and data platform administrators often need to automate warehouse selection to improve efficiency and resource management.
Progress0 / 4 steps
1
Create the warehouses table variable
Create a table variable called warehouses with columns name (string), size (string), and status (string). Insert these exact rows: ('WH_SMALL', 'SMALL', 'AVAILABLE'), ('WH_MEDIUM', 'MEDIUM', 'AVAILABLE'), ('WH_LARGE', 'LARGE', 'BUSY'), ('WH_XLARGE', 'XLARGE', 'AVAILABLE').
Snowflake
Hint
Use DECLARE to create a table variable and INSERT INTO to add rows.
2
Set the minimum warehouse size
Create a variable called min_size and set it to the string value 'MEDIUM'.
Snowflake
Hint
Use DECLARE with DEFAULT to set the variable.
3
Filter warehouses by size and availability
Write a SELECT query that retrieves all columns from warehouses where size is greater than or equal to min_size and status is exactly 'AVAILABLE'.
Snowflake
Hint
Use a WHERE clause with both conditions joined by AND.
4
Select the smallest suitable warehouse
Modify the previous SELECT query to order the results by size ascending and limit the output to 1 row to select the smallest warehouse that meets the criteria.
Snowflake
Hint
Use ORDER BY and LIMIT to get the smallest warehouse.
Practice
(1/5)
1. What does the USE WAREHOUSE command do in Snowflake?
easy
A. It lists all available warehouses.
B. It switches the current warehouse to run queries.
C. It deletes an existing warehouse.
D. It creates a new warehouse.
Solution
Step 1: Understand the purpose of USE WAREHOUSE
This command changes which warehouse is active for running queries.
Step 2: Compare with other commands
Creating, deleting, or listing warehouses use different commands, not USE WAREHOUSE.
Final Answer:
It switches the current warehouse to run queries. -> Option B
Quick Check:
USE WAREHOUSE changes active warehouse [OK]
Hint: Remember: USE means switch active warehouse [OK]
Common Mistakes:
Confusing USE with CREATE or DROP commands
Thinking it lists warehouses
Assuming it modifies warehouse size
2. Which of the following is the correct syntax to switch to a warehouse named COMPUTE_WH?
easy
A. USE WAREHOUSE COMPUTE_WH;
B. SWITCH WAREHOUSE COMPUTE_WH;
C. SELECT WAREHOUSE COMPUTE_WH;
D. CHANGE WAREHOUSE TO COMPUTE_WH;
Solution
Step 1: Recall the correct command syntax
The command to switch warehouses is USE WAREHOUSE <name>;.
Step 2: Check each option
Only USE WAREHOUSE COMPUTE_WH; matches the correct syntax exactly.
Final Answer:
USE WAREHOUSE COMPUTE_WH; -> Option A
Quick Check:
Correct syntax = USE WAREHOUSE [name]; [OK]
Hint: USE WAREHOUSE plus name switches warehouse [OK]
Common Mistakes:
Using SWITCH or CHANGE instead of USE
Adding extra keywords like TO or SELECT
Missing semicolon at end
3. Given the following commands run in order:
USE WAREHOUSE SMALL_WH;
SELECT CURRENT_WAREHOUSE();
USE WAREHOUSE LARGE_WH;
SELECT CURRENT_WAREHOUSE();
What will be the output of the two CURRENT_WAREHOUSE() calls?
medium
A. SMALL_WH then LARGE_WH
B. LARGE_WH then SMALL_WH
C. SMALL_WH twice
D. LARGE_WH twice
Solution
Step 1: Analyze the first USE WAREHOUSE command
The first command sets the active warehouse to SMALL_WH, so the first CURRENT_WAREHOUSE() returns SMALL_WH.
Step 2: Analyze the second USE WAREHOUSE command
The second command switches the active warehouse to LARGE_WH, so the second CURRENT_WAREHOUSE() returns LARGE_WH.
Final Answer:
SMALL_WH then LARGE_WH -> Option A
Quick Check:
Warehouse switches reflect in CURRENT_WAREHOUSE() [OK]
Hint: Each USE WAREHOUSE changes current warehouse immediately [OK]
Common Mistakes:
Assuming warehouse does not change after second USE
Mixing order of outputs
Thinking CURRENT_WAREHOUSE() returns session name
4. You run the command USE WAREHOUSE BIG_WH but get an error saying the warehouse does not exist. What is the most likely cause?
medium
A. The command requires a semicolon at the end.
B. You need to restart your Snowflake session.
C. You must create a database before switching warehouses.
D. The warehouse name is misspelled or does not exist.
Solution
Step 1: Understand the error message
The error says the warehouse does not exist, so the name is likely wrong or missing.
Step 2: Evaluate other options
Restarting session or creating a database is unrelated; semicolon missing usually causes syntax error, not 'does not exist'.
Final Answer:
The warehouse name is misspelled or does not exist. -> Option D
Quick Check:
Nonexistent warehouse name causes error [OK]
Hint: Check warehouse name spelling if 'does not exist' error appears [OK]
Common Mistakes:
Restarting session unnecessarily
Confusing warehouse with database
Ignoring error message details
5. You have two warehouses: SMALL_WH with 1 cluster and LARGE_WH with 4 clusters. You want to run a heavy query quickly but also save costs on light queries. Which strategy is best?
hard
A. Always use LARGE_WH for all queries to ensure speed.
B. Use SMALL_WH only and increase its size when needed.
C. Use SMALL_WH for light queries and switch to LARGE_WH for heavy queries.
D. Create a new warehouse for each query type.
Solution
Step 1: Understand warehouse sizes and costs
SMALL_WH is cheaper and good for light work; LARGE_WH is bigger and faster but costs more.
Step 2: Choose strategy balancing speed and cost
Switching warehouses based on query load saves cost and improves performance.
Final Answer:
Use SMALL_WH for light queries and switch to LARGE_WH for heavy queries. -> Option C
Quick Check:
Match warehouse size to query load for cost and speed [OK]
Hint: Match warehouse size to query weight, switch as needed [OK]
Common Mistakes:
Using large warehouse always wastes cost
Trying to resize warehouses dynamically
Creating many warehouses unnecessarily
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.