LUCENT GRID
Data Engineering Lab ยท Subqueries & Derived Tables
Loading procurement_db...
๐Ÿ–ฅ๏ธ
SQL Terminal
๐Ÿ“š
Concepts
๐Ÿ“Š
Schema
๐Ÿ“Œ CHALLENGES
โ—‹Scalar subquery: avg delivery time
โ—‹IN subquery: electronics suppliers
โ—‹Correlated: suppliers above avg
โ—‹EXISTS: suppliers with no orders
โ—‹FROM subquery: derived table
โ—‹Final report submitted
0 / 6 complete
SQL TERMINAL โ€” procurement_db
MySQL 8.0 โ€” procurement_db Tables: suppliers, orders, products, categories Task: identify slow suppliers using subqueries Tip: open the Concepts window for syntax reference โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
mysql>
SUBQUERY REFERENCE
SCALAR SUBQUERY
SELECT name FROM suppliers WHERE avg_days > ( SELECT AVG(avg_days) FROM suppliers );
IN SUBQUERY
SELECT * FROM suppliers WHERE id IN ( SELECT supplier_id FROM orders WHERE category = 'Electronics' );
CORRELATED SUBQUERY
SELECT s.name, s.avg_days FROM suppliers s WHERE s.avg_days > ( SELECT AVG(s2.avg_days) FROM suppliers s2 WHERE s2.category = s.category );
EXISTS
SELECT name FROM suppliers s WHERE NOT EXISTS ( SELECT 1 FROM orders o WHERE o.supplier_id = s.id );
FROM SUBQUERY (DERIVED TABLE)
SELECT cat, avg_del FROM ( SELECT category AS cat, AVG(avg_days) AS avg_del FROM suppliers GROUP BY category ) AS category_avg WHERE avg_del > 5;
SCHEMA โ€” procurement_db
suppliers
โšฟ id
name
category
avg_days
country
active (bool)
142 rows
orders
โšฟ id
โšท supplier_id
โšท product_id
quantity
delivery_days
order_date
3,847 rows
products
โšฟ id
name
โšท category_id
unit_cost
312 rows
categories
โšฟ id
name
8 rows
โ˜ฐ BRIEF
๐Ÿ–ฅ Terminal
๐Ÿ“š Concepts
๐Ÿ“Š Schema
MISSION BRIEF

MISSION BRIEFING

SUBQUERIES โ€” MERIDIAN PROCUREMENT

SCENARIO

Meridian Procurement is losing money on late deliveries. The procurement director needs to know which suppliers are performing below average โ€” but only within their own category. A supplier that takes 8 days in the Electronics category (where the average is 6) is more problematic than one taking 8 days in Heavy Freight (average 12). You need correlated subqueries to answer this correctly.

CHALLENGES

  • Find the overall average delivery time using a scalar subquery
  • Use IN to find all suppliers who have handled Electronics orders
  • Write a correlated subquery: suppliers whose avg_days exceeds their category average
  • Use NOT EXISTS to find suppliers with zero orders placed
  • Use a FROM subquery (derived table) to get avg delivery per category, then filter categories where that average exceeds 5 days
  • Submit your findings

KEY KEYWORDS

  • SELECT AVG(avg_days) FROM suppliers โ€” scalar result
  • WHERE id IN (SELECT supplier_id FROM orders WHERE ...)
  • WHERE avg_days > (SELECT AVG(...) FROM suppliers s2 WHERE s2.category = s.category)
  • WHERE NOT EXISTS (SELECT 1 FROM orders WHERE supplier_id = s.id)
  • FROM (SELECT ... GROUP BY ...) AS alias

TIP

The Concepts window has working syntax templates for each subquery type. The terminal recognises the key clauses โ€” you don't need to type every column name exactly.

Display Mode
LAB COMPLETE
๐Ÿ†
ANALYSIS COMPLETE
Subqueries & Derived Tables โ€” Meridian Procurement
โšก
+50 XP
EXPERIENCE EARNED
โฌ† LEVEL UP โ€” Level
โ†’ Return to Labs