Krishna Prakash
Initial commit For SQL Practice Platform
e7cf806
[
{
"id": "q1",
"title": "List electronics products",
"difficulty": "Beginner",
"description": "Retrieve the names and sale amounts of all products in the Electronics category.",
"hint": "Use WHERE clause to filter by category.",
"expected_sql": "SELECT product_name, sale_amount FROM sales WHERE category = 'Electronics';"
},
{
"id": "q2",
"title": "Find sales after specific date",
"difficulty": "Beginner",
"description": "Show all sales that occurred after January 5, 2023.",
"hint": "Use WHERE clause with date comparison.",
"expected_sql": "SELECT product_name, sale_date FROM sales WHERE sale_date > '2023-01-05';"
},
{
"id": "q3",
"title": "List orders by customer",
"difficulty": "Beginner",
"description": "Retrieve all orders placed by customer with ID 2001.",
"hint": "Use WHERE clause to filter by customer_id.",
"expected_sql": "SELECT order_id, product_id, order_date FROM orders WHERE customer_id = 2001;"
},
{
"id": "q4",
"title": "Find high-value sales",
"difficulty": "Beginner",
"description": "Show products with a sale amount greater than 1000.",
"hint": "Use WHERE clause to filter by sale_amount.",
"expected_sql": "SELECT product_name, sale_amount FROM sales WHERE sale_amount > 1000;"
},
{
"id": "q5",
"title": "List unique categories",
"difficulty": "Beginner",
"description": "Retrieve all unique product categories from the sales table.",
"hint": "Use DISTINCT to avoid duplicate categories.",
"expected_sql": "SELECT DISTINCT category FROM sales;"
},
{
"id": "q6",
"title": "Find orders with quantity greater than 1",
"difficulty": "Beginner",
"description": "Show order details where the quantity is greater than 1.",
"hint": "Use WHERE clause to filter by quantity.",
"expected_sql": "SELECT order_id, product_id, quantity FROM orders WHERE quantity > 1;"
},
{
"id": "q7",
"title": "List sales by date",
"difficulty": "Beginner",
"description": "Show all sales ordered by sale date.",
"hint": "Use ORDER BY clause on sale_date.",
"expected_sql": "SELECT product_name, sale_date FROM sales ORDER BY sale_date;"
},
{
"id": "q8",
"title": "Find accessories sales",
"difficulty": "Beginner",
"description": "Retrieve all sales from the Accessories category.",
"hint": "Use WHERE clause to filter by category.",
"expected_sql": "SELECT product_name, sale_amount FROM sales WHERE category = 'Accessories';"
},
{
"id": "q9",
"title": "List order quantities",
"difficulty": "Beginner",
"description": "Show the quantity for each order.",
"hint": "Select quantity from orders table.",
"expected_sql": "SELECT order_id, quantity FROM orders;"
},
{
"id": "q10",
"title": "Find sales with low amounts",
"difficulty": "Beginner",
"description": "Retrieve products with a sale amount less than 100.",
"hint": "Use WHERE clause to filter by sale_amount.",
"expected_sql": "SELECT product_name, sale_amount FROM sales WHERE sale_amount < 100;"
},
{
"id": "q11",
"title": "Total revenue by category",
"difficulty": "Intermediate",
"description": "Calculate the total sale amount for each product category.",
"hint": "Use GROUP BY on category and SUM on sale_amount.",
"expected_sql": "SELECT category, SUM(sale_amount) AS total_revenue FROM sales GROUP BY category;"
},
{
"id": "q12",
"title": "Count orders per product",
"difficulty": "Intermediate",
"description": "Show the number of orders for each product.",
"hint": "Join sales and orders, then GROUP BY product_name.",
"expected_sql": "SELECT s.product_name, COUNT(o.order_id) AS order_count FROM sales s JOIN orders o ON s.id = o.product_id GROUP BY s.product_name;"
},
{
"id": "q13",
"title": "Average sale amount per product",
"difficulty": "Intermediate",
"description": "Find the average sale amount for each product name.",
"hint": "Use GROUP BY on product_name and AVG on sale_amount.",
"expected_sql": "SELECT product_name, AVG(sale_amount) AS avg_sale FROM sales GROUP BY product_name;"
},
{
"id": "q14",
"title": "Customer order count",
"difficulty": "Intermediate",
"description": "Show the number of orders placed by each customer.",
"hint": "Use GROUP BY on customer_id and COUNT.",
"expected_sql": "SELECT customer_id, COUNT(order_id) AS order_count FROM orders GROUP BY customer_id;"
},
{
"id": "q15",
"title": "High quantity orders",
"difficulty": "Intermediate",
"description": "List orders with a total quantity greater than 2.",
"hint": "Use GROUP BY on order_id and HAVING clause.",
"expected_sql": "SELECT order_id, SUM(quantity) AS total_quantity FROM orders GROUP BY order_id HAVING total_quantity > 2;"
},
{
"id": "q16",
"title": "Products not ordered",
"difficulty": "Intermediate",
"description": "List products that have not been ordered.",
"hint": "Use LEFT JOIN and check for NULL in orders table.",
"expected_sql": "SELECT s.product_name FROM sales s LEFT JOIN orders o ON s.id = o.product_id WHERE o.order_id IS NULL;"
},
{
"id": "q17",
"title": "Order details with products",
"difficulty": "Intermediate",
"description": "Show order details including product names and quantities.",
"hint": "Join sales and orders tables.",
"expected_sql": "SELECT o.order_id, s.product_name, o.quantity FROM orders o JOIN sales s ON o.product_id = s.id;"
},
{
"id": "q18",
"title": "Total quantity per customer",
"difficulty": "Intermediate",
"description": "Calculate the total quantity of items ordered by each customer.",
"hint": "Use GROUP BY on customer_id and SUM on quantity.",
"expected_sql": "SELECT customer_id, SUM(quantity) AS total_quantity FROM orders GROUP BY customer_id;"
},
{
"id": "q19",
"title": "Orders by date range",
"difficulty": "Intermediate",
"description": "List all orders placed between January 1, 2023, and January 5, 2023.",
"hint": "Use BETWEEN clause for date range.",
"expected_sql": "SELECT order_id, customer_id, order_date FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-01-05';"
},
{
"id": "q20",
"title": "Most ordered product category",
"difficulty": "Intermediate",
"description": "Find the category with the highest number of orders.",
"hint": "Join sales and orders, group by category, and use LIMIT.",
"expected_sql": "SELECT s.category, COUNT(o.order_id) AS order_count FROM sales s JOIN orders o ON s.id = o.product_id GROUP BY s.category ORDER BY order_count DESC LIMIT 1;"
},
{
"id": "q21",
"title": "Total revenue per customer",
"difficulty": "Advanced",
"description": "Calculate the total revenue (sale_amount * quantity) generated by each customer.",
"hint": "Join sales and orders, multiply sale_amount by quantity, and group by customer_id.",
"expected_sql": "SELECT o.customer_id, SUM(s.sale_amount * o.quantity) AS total_revenue FROM orders o JOIN sales s ON o.product_id = s.id GROUP BY o.customer_id;"
},
{
"id": "q22",
"title": "Most expensive ordered product",
"difficulty": "Advanced",
"description": "Find the product with the highest sale amount that was ordered.",
"hint": "Join sales and orders, use ORDER BY and LIMIT.",
"expected_sql": "SELECT s.product_name, s.sale_amount FROM sales s JOIN orders o ON s.id = o.product_id ORDER BY s.sale_amount DESC LIMIT 1;"
},
{
"id": "q23",
"title": "Daily revenue trend",
"difficulty": "Advanced",
"description": "Show the total revenue (sale_amount * quantity) per day for all orders.",
"hint": "Join tables, group by order_date, and calculate revenue.",
"expected_sql": "SELECT o.order_date, SUM(s.sale_amount * o.quantity) AS daily_revenue FROM orders o JOIN sales s ON o.product_id = s.id GROUP BY o.order_date;"
},
{
"id": "q24",
"title": "Customers with high-value orders",
"difficulty": "Advanced",
"description": "Identify customers whose total order value exceeds 2000.",
"hint": "Join tables, calculate total value, and use HAVING clause.",
"expected_sql": "SELECT o.customer_id, SUM(s.sale_amount * o.quantity) AS total_value FROM orders o JOIN sales s ON o.product_id = s.id GROUP BY o.customer_id HAVING total_value > 2000;"
},
{
"id": "q25",
"title": "Products ordered by multiple customers",
"difficulty": "Advanced",
"description": "Find products that have been ordered by more than one distinct customer.",
"hint": "Join sales and orders, use COUNT and DISTINCT on customer_id, and group by product.",
"expected_sql": "SELECT s.product_name, COUNT(DISTINCT o.customer_id) AS customer_count FROM sales s JOIN orders o ON s.id = o.product_id GROUP BY s.product_name HAVING customer_count > 1;"
},
{
"id": "q26",
"title": "Revenue contribution by category",
"difficulty": "Advanced",
"description": "Calculate the total revenue (sale_amount * quantity) for each product category.",
"hint": "Join tables, multiply sale_amount by quantity, and group by category.",
"expected_sql": "SELECT s.category, SUM(s.sale_amount * o.quantity) AS total_revenue FROM sales s JOIN orders o ON s.id = o.product_id GROUP BY s.category;"
},
{
"id": "q27",
"title": "Earliest and latest order per customer",
"difficulty": "Advanced",
"description": "Show the earliest and latest order dates for each customer.",
"hint": "Use MIN and MAX on order_date, grouped by customer_id.",
"expected_sql": "SELECT customer_id, MIN(order_date) AS earliest_order, MAX(order_date) AS latest_order FROM orders GROUP BY customer_id;"
},
{
"id": "q28",
"title": "Products with high total quantity",
"difficulty": "Advanced",
"description": "Find products with a total ordered quantity greater than 2.",
"hint": "Join sales and orders, group by product, and use HAVING clause.",
"expected_sql": "SELECT s.product_name, SUM(o.quantity) AS total_quantity FROM sales s JOIN orders o ON s.id = o.product_id GROUP BY s.product_name HAVING total_quantity > 2;"
},
{
"id": "q29",
"title": "Customers who ordered all electronics",
"difficulty": "Advanced",
"description": "List customers who have ordered every product in the Electronics category.",
"hint": "Count distinct Electronics products per customer and compare with total Electronics products.",
"expected_sql": "SELECT o.customer_id FROM orders o JOIN sales s ON o.product_id = s.id WHERE s.category = 'Electronics' GROUP BY o.customer_id HAVING COUNT(DISTINCT s.id) = (SELECT COUNT(*) FROM sales WHERE category = 'Electronics');"
},
{
"id": "q30",
"title": "Most frequent customer by product",
"difficulty": "Advanced",
"description": "Find the customer who ordered each product the most times.",
"hint": "Join tables, group by product and customer, use subquery to find max orders.",
"expected_sql": "SELECT s.product_name, o.customer_id, COUNT(o.order_id) AS order_count FROM sales s JOIN orders o ON s.id = o.product_id GROUP BY s.product_name, o.customer_id HAVING COUNT(o.order_id) = (SELECT MAX(order_count) FROM (SELECT COUNT(order_id) AS order_count FROM orders o2 WHERE o2.product_id = s.id GROUP BY o2.customer_id) AS counts);"
}
]