Database
Common Table Expressions (CTE)
QueryValidateExpert
Description
Use CTEs for complex queries with readable structure.
Test Scenario
-- Your query using CTEs:
WITH order_totals AS (
SELECT o.id, o.user_id, SUM(oi.quantity * oi.unit_price) as calculated_total
FROM orders o
JOIN order_items oi ON o.id = oi.order_id
GROUP BY o.id
),
user_stats AS (
SELECT user_id, COUNT(*) as order_count, SUM(calculated_total) as lifetime_value
FROM order_totals
GROUP BY user_id
)
SELECT u.name, us.order_count, us.lifetime_value
FROM user_stats us
JOIN users u ON us.user_id = u.id
ORDER BY us.lifetime_value DESC;
-- Expected: User rankings by lifetime valueTesting Tips
- •WITH clause defines CTE
- •CTEs can be chained
- •Improves query readability
- •Can be recursive for hierarchies
// Playwright API Testing - Databaseimport { test, expect } from '@playwright/test';test('Database query via API', async ({ request }) => {const response = await request.post('/api/database/query', {data: {sql: 'SELECT * FROM users WHERE id = ?',params: [1]}});expect(response.ok()).toBeTruthy();const { rows } = await response.json();expect(rows.length).toBeGreaterThan(0);});
Challenge ID: sql-cte-recursive
2 frameworks available