WGU D427 DATA MANAGEMENT APPLICATIONS OA EXAM
2026/2027 | Official Practice Exam | Pass Guaranteed - A+
Graded
Total Questions: 50 | Time: 90 min | Pass: 70%
TABLE OF CONTENTS
Section 1 | SQL Query Writing (SELECT, FROM, WHERE) | Q1 – Q10
Section 2 | Joins & Subqueries (INNER, LEFT, RIGHT, nested) | Q11 – Q20
Section 3 | Data Manipulation (INSERT, UPDATE, DELETE) | Q21 – Q30
Section 4 | Database Design & Normalization | Q31 – Q40
Section 5 | Indexing, Views & Transaction Control | Q41 – Q50
Instructions: Choose the single best answer. Pass: 35 in 90 minutes.
══════════════════════════════════════
SECTION 1: SQL QUERY WRITING (SELECT, FROM, WHERE) Q1 – Q10
══════════════════════════════════════
Question 1 of 50
A junior analyst at a retail company needs to pull a list of all customers who
made purchases over $500 in the last quarter. The database has a `sales` table
with columns `customer_id`, `amount`, and `sale_date`. The analyst writes a
query but keeps getting every row back. What is the most likely missing piece
in their query?
A. A GROUP BY clause on customer_id
,2
B. A WHERE clause filtering amount and sale_date
C. An ORDER BY clause on sale_date
D. A HAVING clause on amount
Correct Answer: B
Rationale: Without a WHERE clause, SELECT returns every row in the table
regardless of amount or date, so the analyst sees all purchases instead of just
those over $500 in the last quarter. A GROUP BY would aggregate rows but not
filter them before retrieval, and HAVING filters groups after aggregation which
is unnecessary here. In real environments, forgetting the WHERE clause is one
of the most common and expensive mistakes because it forces the database to
scan the entire table.
Question 2 of 50
A 29-year-old data coordinator at a university is asked to generate a report
showing student names and email addresses from the `students` table. The
table has 40,000 rows but the coordinator only needs the two columns for a
mailing list. Which query best accomplishes this without wasting resources?
A. SELECT * FROM students
B. SELECT name, email FROM students
C. SELECT DISTINCT * FROM students
D. SELECT ALL name, email FROM students WHERE id > 0
Correct Answer: B
Rationale: Explicitly listing only the needed columns—name and email—
minimizes network transfer and memory usage, which matters when pulling
40,000 rows for a mailing list. SELECT * hauls across every column including
unnecessary data like enrollment dates and addresses, while DISTINCT * would
,3
add overhead to deduplicate complete rows when only two columns are
needed. In production systems, selecting specific columns is a standard
performance habit that also makes queries easier to maintain when schemas
change.
Question 3 of 50
A database administrator at a logistics firm notices that a report query is
running slowly. The query uses `SELECT * FROM shipments WHERE
delivery_status = 'Delayed' AND ship_date > '2024-01-01'`. The `shipments`
table has 2 million rows. Which change would most directly improve execution
speed?
A. Replacing * with specific column names
B. Adding an index on delivery_status and ship_date
C. Adding an ORDER BY ship_date clause
D. Converting the query to a subquery
Correct Answer: B
Rationale: An index on the filtered columns—delivery_status and ship_date—
allows the database engine to locate matching rows directly instead of
scanning all 2 million rows, which is the root cause of the slowness. While
replacing * with specific columns reduces data transfer, it does not reduce the
number of rows the engine must inspect. In practice, indexing filtered columns
is the first optimization step for large tables with selective WHERE conditions.
Question 4 of 50
A financial analyst at a credit union needs to find all members whose last name
starts with "Mc" to prepare a cultural outreach mailing. The `members` table
, 4
has a `last_name` column. Which WHERE clause correctly captures this
pattern?
A. WHERE last_name = 'Mc'
B. WHERE last_name LIKE 'Mc%'
C. WHERE last_name LIKE '%Mc'
D. WHERE last_name IN ('Mc')
Correct Answer: B
Rationale: The LIKE operator with the wildcard % after 'Mc' matches any string
beginning with those two characters, which correctly finds names like
McDonald and McGregor. Using = or IN without a wildcard looks for the exact
string 'Mc', while '%Mc' would only match names ending in Mc such as MacMc.
Pattern matching with LIKE is fundamental for partial string searches in
membership and customer databases.
Question 5 of 50
A 34-year-old inventory manager at a warehouse needs a quick count of how
many distinct product categories are stored in the `products` table. The table
has a `category_id` column. Which query returns the correct number?
A. SELECT COUNT(*) FROM products
B. SELECT COUNT(category_id) FROM products
C. SELECT COUNT(DISTINCT category_id) FROM products
D. SELECT DISTINCT COUNT(category_id) FROM products
Correct Answer: C