📖 Scenario: You are managing a small bookstore database. You want to organize the list of books by their prices to help customers find the cheapest or most expensive books easily.
🎯 Goal: Build SQL queries that sort the books by price in ascending and descending order using ASC and DESC.
📋 What You'll Learn
Create a table called books with columns id, title, and price.
Insert exactly three books with specified titles and prices.
Write a query to select all books sorted by price in ascending order using ASC.
Write a query to select all books sorted by price in descending order using DESC.
💡 Why This Matters
🌍 Real World
Sorting data is essential in databases to organize information for reports, user views, or analytics. For example, customers often want to see products from cheapest to most expensive.
💼 Career
Database developers and analysts frequently write queries with sorting to prepare data for applications, dashboards, or decision-making.
Progress0 / 4 steps
1
Create the books table and insert data
Create a table called books with columns id (integer), title (text), and price (decimal). Then insert these three books exactly: (1, 'The Alchemist', 10.99), (2, '1984', 8.99), and (3, 'Clean Code', 25.50).
MySQL
Hint
Use CREATE TABLE to make the table and INSERT INTO to add the three books with exact values.
2
Set up the base SELECT query
Write a SQL query that selects all columns from the books table. Store this query in a variable called base_query as a string.
MySQL
Hint
Use SET @base_query = 'SELECT * FROM books' to store the query string.
3
Write the ascending order query using ASC
Write a SQL query that selects all columns from books and sorts the results by price in ascending order using ORDER BY price ASC. Store this query in a variable called asc_query as a string.
MySQL
Hint
Use ORDER BY price ASC to sort prices from lowest to highest.
4
Write the descending order query using DESC
Write a SQL query that selects all columns from books and sorts the results by price in descending order using ORDER BY price DESC. Store this query in a variable called desc_query as a string.
MySQL
Hint
Use ORDER BY price DESC to sort prices from highest to lowest.
Practice
(1/5)
1. What does the ASC keyword do in a MySQL ORDER BY clause?
easy
A. Filters the data to show only ascending values
B. Sorts the data from largest to smallest or Z to A
C. Groups the data by ascending order
D. Sorts the data from smallest to largest or A to Z
Solution
Step 1: Understand the meaning of ASC in ORDER BY
ASC stands for ascending order, which means sorting from smallest to largest or alphabetically from A to Z.
Step 2: Compare with other options
DESC is for descending order, filtering and grouping are different SQL operations unrelated to ASC.
Final Answer:
Sorts the data from smallest to largest or A to Z -> Option D
Quick Check:
ASC = ascending order = smallest to largest [OK]
Hint: ASC means ascending order: smallest to largest [OK]
Common Mistakes:
Confusing ASC with DESC
Thinking ASC filters data
Mixing sorting with grouping
2. Which of the following is the correct syntax to sort a table named employees by the salary column in descending order?
easy
A. SELECT * FROM employees ORDER BY salary DESC;
B. SELECT * FROM employees ORDER BY salary ASC;
C. SELECT * FROM employees ORDER salary DESC;
D. SELECT * FROM employees SORT BY salary DESC;
Solution
Step 1: Identify correct ORDER BY syntax
The correct syntax to sort results is using ORDER BY followed by the column name and then ASC or DESC.
Step 2: Check each option
SELECT * FROM employees ORDER BY salary ASC; uses ASC, not DESC. SELECT * FROM employees ORDER salary DESC; misses BY keyword. SELECT * FROM employees SORT BY salary DESC; uses SORT BY which is invalid in MySQL. SELECT * FROM employees ORDER BY salary DESC; is correct.
Final Answer:
SELECT * FROM employees ORDER BY salary DESC; -> Option A
Quick Check:
ORDER BY + column + DESC is correct syntax [OK]
Hint: Use ORDER BY column DESC to sort descending [OK]
Common Mistakes:
Omitting BY after ORDER
Using SORT BY instead of ORDER BY
Mixing ASC and DESC keywords
3. Given the table products with column price, what will be the order of prices returned by this query?
SELECT price FROM products ORDER BY price DESC;
medium
A. Prices sorted randomly
B. Prices sorted from lowest to highest
C. Prices sorted from highest to lowest
D. Prices grouped by price value
Solution
Step 1: Analyze ORDER BY with DESC
ORDER BY price DESC sorts the prices from the largest value to the smallest value.
Step 2: Eliminate other options
Prices sorted from lowest to highest is ascending order, Prices sorted randomly is incorrect because ORDER BY sorts results, Prices grouped by price value is grouping which is unrelated.
Final Answer:
Prices sorted from highest to lowest -> Option C
Quick Check:
DESC means descending order = highest to lowest [OK]
Hint: DESC sorts from highest to lowest [OK]
Common Mistakes:
Confusing DESC with ASC
Expecting random order without ORDER BY
Thinking ORDER BY groups data
4. Identify the error in this query that tries to sort students by age in descending order:
SELECT * FROM students ORDER age DESC;
medium
A. The table name students is invalid
B. Missing BY keyword after ORDER
C. ORDER BY should be replaced with SORT BY
D. DESC cannot be used with ORDER
Solution
Step 1: Check ORDER BY syntax
The correct syntax requires ORDER BY, not just ORDER, before the column name.
Step 2: Validate other parts
DESC is valid with ORDER BY. SORT BY is not valid in MySQL. Table name is valid as given.
Final Answer:
Missing BY keyword after ORDER -> Option B
Quick Check:
ORDER BY is required, not just ORDER [OK]
Hint: Always use ORDER BY, not just ORDER [OK]
Common Mistakes:
Omitting BY after ORDER
Using SORT BY instead of ORDER BY
Misunderstanding DESC usage
5. You want to list all orders sorted first by order_date ascending, then by total_amount descending. Which query correctly achieves this?
hard
A. SELECT * FROM orders ORDER BY order_date ASC, total_amount DESC;
B. SELECT * FROM orders ORDER BY order_date DESC, total_amount ASC;
C. SELECT * FROM orders ORDER BY total_amount DESC, order_date ASC;
D. SELECT * FROM orders ORDER BY total_amount ASC, order_date DESC;
Solution
Step 1: Understand multi-column ORDER BY
ORDER BY can sort by multiple columns in sequence: first column sorts first, then second column breaks ties.
Step 2: Match sorting directions
We want order_date ascending first, then total_amount descending. SELECT * FROM orders ORDER BY order_date ASC, total_amount DESC; matches this order and directions exactly.
Final Answer:
SELECT * FROM orders ORDER BY order_date ASC, total_amount DESC; -> Option A
Quick Check:
First ASC on order_date, then DESC on total_amount [OK]
Hint: List columns in ORDER BY with directions in desired priority [OK]
Common Mistakes:
Swapping column order in ORDER BY
Mixing ASC and DESC directions incorrectly
Using DESC when ASC is needed and vice versa
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.