PICARDI ACADEMY  ·  LEARN SQL BY DOING THE JOBpicardiacademy.com
P
Picardi Academy
SQL practice that acts like a job
Picardi Academy · Placement test
Free SQL placement test

Prove you can write SQL.

16 questions against a real retail database. Write a query for each, run it to check your rows, then submit. Score 75% or better and you can claim a verifiable SQL Foundations certificate. No account needed. Below that mark, we'll show you exactly where the gaps are and carry your levels into an account — $1 for your first month, then $5/month — so you don't restart from zero.

Question 1 of 16
Return the id and email of every customer whose state is 'TX'.
Question 2 of 16
Return the name and price of every product with a price under 30.
Question 3 of 16
Return the name and price of the 3 most expensive products, priciest first.
Question 4 of 16
Return one row with two columns: order_count = the number of orders, and avg_amount = the average of total_amount rounded to 2 decimals.
Question 5 of 16
Return one row with cheapest = the lowest product price and priciest = the highest product price.
Question 6 of 16
For every order status, return the status and orders = how many orders have that status.
Question 7 of 16
For every customer state, return the state and customers = the number of customers in it.
Question 8 of 16
Return each state and its customer count as customers, but only for states with more than 5 customers.
Question 9 of 16
For every order, return the customer's first_name and last_name plus the order's order_date and total_amount.
Question 10 of 16
For every product that appears in at least one order item, return the product name and total_qty = the total quantity ordered of it.
Question 11 of 16
Return the id, order_date and total_amount of every order placed in the year 2026.
Question 12 of 16
Return the first_name, last_name and signup_date of every customer who signed up before 2024-01-01.
Question 13 of 16
Using a subquery, return the id and email of every customer who has placed at least one order.
Question 14 of 16
Return the name and category of every product whose name contains 'desk' (case-insensitive).
Question 15 of 16
Return the distinct list of product category values, one column named category.
Question 16 of 16
For every order return the id, the total_amount, and spend_rank = the order's rank by total_amount from highest to lowest (1 = highest), using a window function.
You can only submit once.