File size: 11,609 Bytes
e7cf806 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 |
[
{
"id": "q1",
"title": "List all customers",
"difficulty": "Beginner",
"description": "Retrieve the names and emails of all customers.",
"hint": "Use SELECT on the customers table.",
"expected_sql": "SELECT name, email FROM customers;"
},
{
"id": "q2",
"title": "Show savings accounts",
"difficulty": "Beginner",
"description": "List all accounts of type 'Savings' with their balances.",
"hint": "Use WHERE clause to filter by account_type.",
"expected_sql": "SELECT account_id, balance FROM accounts WHERE account_type = 'Savings';"
},
{
"id": "q3",
"title": "Find customers in New York",
"difficulty": "Beginner",
"description": "Show the names and ages of customers living in New York.",
"hint": "Use WHERE clause to filter by city.",
"expected_sql": "SELECT name, age FROM customers WHERE city = 'New York';"
},
{
"id": "q4",
"title": "Count total accounts",
"difficulty": "Beginner",
"description": "Count the total number of accounts in the system.",
"hint": "Use COUNT() function on the accounts table.",
"expected_sql": "SELECT COUNT(*) AS total_accounts FROM accounts;"
},
{
"id": "q5",
"title": "List accounts opened in 2023",
"difficulty": "Beginner",
"description": "Retrieve all accounts opened in 2023.",
"hint": "Use WHERE clause with LIKE on opened_on.",
"expected_sql": "SELECT account_id, account_type, opened_on FROM accounts WHERE opened_on LIKE '2023%';"
},
{
"id": "q6",
"title": "List distinct account types",
"difficulty": "Beginner",
"description": "Get all unique account types from the accounts table.",
"hint": "Use DISTINCT to avoid duplicate account types.",
"expected_sql": "SELECT DISTINCT account_type FROM accounts;"
},
{
"id": "q7",
"title": "Find accounts for John Doe",
"difficulty": "Beginner",
"description": "List all accounts owned by John Doe.",
"hint": "Join accounts with customers and filter by name.",
"expected_sql": "SELECT a.account_id, a.account_type, a.balance FROM accounts a JOIN customers c ON a.customer_id = c.customer_id WHERE c.name = 'John Doe';"
},
{
"id": "q8",
"title": "Show customers under 30",
"difficulty": "Beginner",
"description": "Retrieve the names and cities of customers younger than 30 years old.",
"hint": "Use WHERE clause to filter by age.",
"expected_sql": "SELECT name, city FROM customers WHERE age < 30;"
},
{
"id": "q9",
"title": "List loan accounts",
"difficulty": "Beginner",
"description": "Show all accounts of type 'Loan' with their balances.",
"hint": "Use WHERE clause to filter by account_type.",
"expected_sql": "SELECT account_id, balance FROM accounts WHERE account_type = 'Loan';"
},
{
"id": "q10",
"title": "Find customer emails",
"difficulty": "Beginner",
"description": "Retrieve the names and email addresses of all customers.",
"hint": "Select name and email from customers table.",
"expected_sql": "SELECT name, email FROM customers;"
},
{
"id": "q11",
"title": "Count accounts per customer",
"difficulty": "Intermediate",
"description": "Show the number of accounts each customer owns.",
"hint": "Join customers and accounts, then GROUP BY customer name.",
"expected_sql": "SELECT c.name, COUNT(a.account_id) AS account_count FROM customers c LEFT JOIN accounts a ON c.customer_id = a.customer_id GROUP BY c.name;"
},
{
"id": "q12",
"title": "Total balance per customer",
"difficulty": "Intermediate",
"description": "Calculate the total balance across all accounts for each customer.",
"hint": "Join customers and accounts, then GROUP BY customer name and SUM balance.",
"expected_sql": "SELECT c.name, SUM(a.balance) AS total_balance FROM customers c JOIN accounts a ON c.customer_id = a.customer_id GROUP BY c.name;"
},
{
"id": "q13",
"title": "Average balance by account type",
"difficulty": "Intermediate",
"description": "Find the average balance for each account type.",
"hint": "GROUP BY account_type and use AVG on balance.",
"expected_sql": "SELECT account_type, AVG(balance) AS avg_balance FROM accounts GROUP BY account_type;"
},
{
"id": "q14",
"title": "Customers with multiple accounts",
"difficulty": "Intermediate",
"description": "List customers who have more than one account.",
"hint": "Join customers and accounts, GROUP BY customer, and use HAVING clause.",
"expected_sql": "SELECT c.name, COUNT(a.account_id) AS account_count FROM customers c JOIN accounts a ON c.customer_id = a.customer_id GROUP BY c.name HAVING COUNT(a.account_id) > 1;"
},
{
"id": "q15",
"title": "Accounts with negative balance",
"difficulty": "Intermediate",
"description": "Show all accounts with a negative balance, including customer names.",
"hint": "Join accounts with customers and filter by balance < 0.",
"expected_sql": "SELECT a.account_id, c.name, a.account_type, a.balance FROM accounts a JOIN customers c ON a.customer_id = c.customer_id WHERE a.balance < 0;"
},
{
"id": "q16",
"title": "Customers with no accounts",
"difficulty": "Intermediate",
"description": "List customers who do not have any accounts.",
"hint": "Use LEFT JOIN and check for NULL in accounts table.",
"expected_sql": "SELECT c.name FROM customers c LEFT JOIN accounts a ON c.customer_id = a.customer_id WHERE a.account_id IS NULL;"
},
{
"id": "q17",
"title": "Account details with customer info",
"difficulty": "Intermediate",
"description": "Show account details including customer name and city.",
"hint": "Join accounts and customers tables.",
"expected_sql": "SELECT a.account_id, a.account_type, a.balance, c.name, c.city FROM accounts a JOIN customers c ON a.customer_id = c.customer_id;"
},
{
"id": "q18",
"title": "Count accounts by city",
"difficulty": "Intermediate",
"description": "Count the number of accounts for customers in each city.",
"hint": "Join customers and accounts, GROUP BY city.",
"expected_sql": "SELECT c.city, COUNT(a.account_id) AS account_count FROM customers c JOIN accounts a ON c.customer_id = a.customer_id GROUP BY c.city;"
},
{
"id": "q19",
"title": "Accounts opened before 2023",
"difficulty": "Intermediate",
"description": "List all accounts opened before 2023, including customer names.",
"hint": "Join accounts with customers and filter by opened_on.",
"expected_sql": "SELECT a.account_id, a.account_type, c.name FROM accounts a JOIN customers c ON a.customer_id = c.customer_id WHERE a.opened_on < '2023-01-01';"
},
{
"id": "q20",
"title": "Total balance by account type",
"difficulty": "Intermediate",
"description": "Calculate the total balance for each account type.",
"hint": "GROUP BY account_type and SUM balance.",
"expected_sql": "SELECT account_type, SUM(balance) AS total_balance FROM accounts GROUP BY account_type;"
},
{
"id": "q21",
"title": "Customers with highest total balance",
"difficulty": "Advanced",
"description": "Find the customer with the highest total balance across all their accounts.",
"hint": "Join tables, SUM balance, GROUP BY customer, and use LIMIT.",
"expected_sql": "SELECT c.name, SUM(a.balance) AS total_balance FROM customers c JOIN accounts a ON c.customer_id = a.customer_id GROUP BY c.name ORDER BY total_balance DESC LIMIT 1;"
},
{
"id": "q22",
"title": "Youngest customer with loan account",
"difficulty": "Advanced",
"description": "Identify the youngest customer who has a Loan account.",
"hint": "Join tables, filter by account_type, and use MIN on age.",
"expected_sql": "SELECT c.name, c.age FROM customers c JOIN accounts a ON c.customer_id = a.customer_id WHERE a.account_type = 'Loan' ORDER BY c.age ASC LIMIT 1;"
},
{
"id": "q23",
"title": "Account age in years",
"difficulty": "Advanced",
"description": "Calculate the age of each account in years as of '2025-07-11'.",
"hint": "Use JULIANDAY to calculate date difference and divide by 365.25.",
"expected_sql": "SELECT account_id, account_type, ROUND((JULIANDAY('2025-07-11') - JULIANDAY(opened_on)) / 365.25, 1) AS account_age FROM accounts;"
},
{
"id": "q24",
"title": "Customers with diverse account types",
"difficulty": "Advanced",
"description": "List customers who have more than one type of account.",
"hint": "Join tables, count distinct account types, and use HAVING.",
"expected_sql": "SELECT c.name, COUNT(DISTINCT a.account_type) AS type_count FROM customers c JOIN accounts a ON c.customer_id = a.customer_id GROUP BY c.name HAVING type_count > 1;"
},
{
"id": "q25",
"title": "Account openings by year",
"difficulty": "Advanced",
"description": "Show the number of accounts opened each year.",
"hint": "Use STRFTIME to extract year and GROUP BY.",
"expected_sql": "SELECT STRFTIME('%Y', opened_on) AS year, COUNT(account_id) AS account_count FROM accounts GROUP BY year;"
},
{
"id": "q26",
"title": "Customers with high negative balance",
"difficulty": "Advanced",
"description": "Find customers with a total balance less than -5000 across all accounts.",
"hint": "Join tables, SUM balance, and use HAVING clause.",
"expected_sql": "SELECT c.name, SUM(a.balance) AS total_balance FROM customers c JOIN accounts a ON c.customer_id = a.customer_id GROUP BY c.name HAVING total_balance < -5000;"
},
{
"id": "q27",
"title": "Oldest account per customer",
"difficulty": "Advanced",
"description": "Show the earliest opened account for each customer.",
"hint": "Join tables, use MIN on opened_on, and GROUP BY customer.",
"expected_sql": "SELECT c.name, MIN(a.opened_on) AS earliest_opened FROM customers c JOIN accounts a ON c.customer_id = a.customer_id GROUP BY c.name;"
},
{
"id": "q28",
"title": "Cities with high average balance",
"difficulty": "Advanced",
"description": "List cities where the average account balance is greater than 1000.",
"hint": "Join tables, GROUP BY city, and use HAVING clause.",
"expected_sql": "SELECT c.city, AVG(a.balance) AS avg_balance FROM customers c JOIN accounts a ON c.customer_id = a.customer_id GROUP BY c.city HAVING avg_balance > 1000;"
},
{
"id": "q29",
"title": "Customers with no savings accounts",
"difficulty": "Advanced",
"description": "List customers who do not have a Savings account.",
"hint": "Use NOT IN or LEFT JOIN to exclude customers with Savings accounts.",
"expected_sql": "SELECT c.name FROM customers c WHERE c.customer_id NOT IN (SELECT a.customer_id FROM accounts a WHERE a.account_type = 'Savings');"
},
{
"id": "q30",
"title": "Most common account type per city",
"difficulty": "Advanced",
"description": "Find the most common account type in each city.",
"hint": "Join tables, group by city and account_type, use subquery or LIMIT.",
"expected_sql": "SELECT c.city, a.account_type, COUNT(a.account_id) AS account_count FROM customers c JOIN accounts a ON c.customer_id = a.customer_id GROUP BY c.city, a.account_type HAVING COUNT(a.account_id) = (SELECT MAX(account_count) FROM (SELECT COUNT(account_id) AS account_count FROM accounts a2 JOIN customers c2 ON a2.customer_id = c2.customer_id WHERE c2.city = c.city GROUP BY a2.account_type) AS counts);"
}
]
|