📖 Scenario: You are managing a small online store database. You want to calculate the total price for each order item by multiplying the quantity by the unit price. Instead of storing the total price in the database, you will compute it on the fly using SQL queries. This approach keeps your data flexible and always accurate if prices or quantities change.
🎯 Goal: Build a simple SQL query that computes the total price for each order item by multiplying quantity and unit_price columns. This shows how computed values add flexibility by calculating results dynamically.
📋 What You'll Learn
Create a table called order_items with columns item_id (integer), quantity (integer), and unit_price (decimal).
Insert three rows with exact values: (1, 2, 10.00), (2, 5, 7.50), (3, 1, 20.00).
Write a SELECT query that returns item_id, quantity, unit_price, and a computed column total_price which is quantity * unit_price.
Use an alias total_price for the computed column in the SELECT statement.
💡 Why This Matters
🌍 Real World
Computing values on the fly in queries helps keep data consistent and reduces storage needs. For example, online stores calculate totals dynamically to reflect current prices and quantities.
💼 Career
Database developers and analysts often write queries with computed columns to generate reports and insights without changing the stored data.
Progress0 / 4 steps
1
Create the order_items table and insert data
Create a table called order_items with columns item_id as INTEGER, quantity as INTEGER, and unit_price as DECIMAL(5,2). Then insert these exact rows: (1, 2, 10.00), (2, 5, 7.50), and (3, 1, 20.00).
MySQL
Hint
Use CREATE TABLE to define columns and INSERT INTO to add rows with the exact values.
2
Add a SELECT query to retrieve all columns
Write a SELECT query to get item_id, quantity, and unit_price from the order_items table.
MySQL
Hint
Use SELECT with the exact column names and FROM order_items.
3
Add a computed column for total price
Modify the SELECT query to include a computed column called total_price that multiplies quantity by unit_price. Use the expression quantity * unit_price AS total_price.
MySQL
Hint
Add quantity * unit_price AS total_price to the SELECT list.
4
Complete the query to show computed total price
Ensure the final query selects item_id, quantity, unit_price, and the computed total_price column from order_items. This completes the example of using computed values for flexibility.
MySQL
Hint
Check that the SELECT statement includes the computed column with the alias total_price.
Practice
(1/5)
1. What is the main benefit of using computed values in a MySQL query?
easy
A. They create new data from existing columns without extra storage
B. They permanently change the original data in the table
C. They slow down the query execution significantly
D. They require additional tables to store results
Solution
Step 1: Understand computed values
Computed values are created on the fly using existing columns without storing extra data.
Step 2: Compare options
Only They create new data from existing columns without extra storage correctly states this benefit; others describe incorrect effects.
Final Answer:
They create new data from existing columns without extra storage -> Option A
Quick Check:
Computed values = new data without storage [OK]
Hint: Computed values don't store data, they calculate on demand [OK]
Common Mistakes:
Thinking computed values change stored data
Assuming computed values need extra tables
Believing computed values always slow queries
2. Which of the following is the correct syntax to create a computed column showing total price as quantity * price in a SELECT statement?
easy
A. SELECT quantity + price AS total_price FROM sales;
B. SELECT quantity * price AS total_price FROM sales;
C. SELECT quantity price AS total_price FROM sales;
D. SELECT total_price = quantity * price FROM sales;
Solution
Step 1: Identify correct arithmetic operator
Multiplication uses the * operator, so quantity * price is correct.
Step 2: Check SQL syntax for aliasing
Using AS total_price correctly names the computed column.
Final Answer:
SELECT quantity * price AS total_price FROM sales; -> Option B
Quick Check:
Use * for multiplication and AS for alias [OK]
Hint: Use * for multiplication and AS to name computed columns [OK]
Common Mistakes:
Using + instead of * for multiplication
Missing AS keyword for alias
Writing invalid syntax like quantity price
3. Given the table employees with columns first_name, last_name, and birth_year, what will this query return?
SELECT first_name, last_name, YEAR(CURDATE()) - birth_year AS age FROM employees;
medium
A. An error because YEAR() cannot be used here
B. A list of employees with their birth years only
C. A list of employees with their full names and current ages
D. A list of employees with their ages but no names
Solution
Step 1: Understand the computed column
The expression YEAR(CURDATE()) - birth_year calculates current age by subtracting birth year from current year.
Step 2: Analyze selected columns
The query selects first_name, last_name, and the computed age, so it returns names and ages.
Final Answer:
A list of employees with their full names and current ages -> Option C
Quick Check:
Computed age = current year - birth year [OK]
Hint: Subtract birth year from current year to get age [OK]
Common Mistakes:
Thinking YEAR() function causes error
Ignoring the computed age column
Assuming only birth years are returned
4. Identify the error in this query that tries to compute full name:
SELECT first_name + ' ' + last_name AS full_name FROM users;
medium
A. Using + to concatenate strings causes an error in MySQL
B. Missing AS keyword for alias
C. Using single quotes around space is invalid
D. The table name users is incorrect
Solution
Step 1: Check string concatenation syntax in MySQL
MySQL uses CONCAT() function, not + operator, to join strings.
Step 2: Verify other parts of query
AS keyword and single quotes are correct; table name assumed valid.
Final Answer:
Using + to concatenate strings causes an error in MySQL -> Option A
Quick Check:
Use CONCAT() for strings, not + [OK]
Hint: Use CONCAT() to join strings in MySQL [OK]
Common Mistakes:
Using + for string concatenation
Confusing single quotes with double quotes
Assuming AS is optional
5. You want to create a query that shows each product's name and its discounted price, which is 10% less than the original price stored in price. Which query correctly uses a computed value to achieve this?
hard
A. SELECT product_name, price / 0.10 AS discounted_price FROM products;
B. SELECT product_name, price * 10 AS discounted_price FROM products;
C. SELECT product_name, price + 0.10 AS discounted_price FROM products;
D. SELECT product_name, price - (price * 0.10) AS discounted_price FROM products;
Solution
Step 1: Calculate 10% discount correctly
10% discount means subtracting 10% of price: price - (price * 0.10).
Step 2: Check other options for correctness
SELECT product_name, price * 10 AS discounted_price FROM products; multiplies price by 10 (wrong), C adds 0.10 (wrong), D divides by 0.10 (wrong).
Final Answer:
SELECT product_name, price - (price * 0.10) AS discounted_price FROM products; -> Option D
Quick Check:
Discounted price = price minus 10% [OK]
Hint: Subtract 10% by price - (price * 0.10) [OK]
Common Mistakes:
Multiplying price by 10 instead of 0.10
Adding 0.10 instead of subtracting percentage
Dividing price by 0.10 incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.