Write a query to list all foreign keys referencing a given table in a schema (engine-specific system tables allowed).
-
SQL
- Write a SQL query to find the second highest salary from an Employees table without using LIMIT or TOP.
- Write a query to find all customers who placed orders in every month of 2025.
- Write a query to identify duplicate rows in a Transactions table based on customer_id, amount, and date.
- Write a query using GROUP BY and HAVING to find departments with more than 10 employees earning above the department average salary.
- Write a query to return the top 3 selling products per category using a subquery (no window functions allowed).
- Write a query to calculate the running total of daily revenue for a store using a self-join.
- Write a query to find the average order value per customer segment, excluding cancelled orders.
- Write a query to find employees who earn more than their direct manager, using a self-join on an Employees table.
- Write a query to list all customers who have not placed any order in the last 90 days.
- Write a query to compute the percentage of total revenue contributed by each product category.
- Write a query to find the first purchase date and last purchase date for every customer.
- Write a query to find the three most recent orders for each customer.
- Write a query that returns customers whose total spend is above the 90th percentile of all customers.
- Write a query to find customers who bought Product A but never bought Product B.
- Write a query to count how many orders each customer placed and rank customers by order count within their city.
- Write a query to identify the busiest hour of the day for support ticket creation using a Tickets table.
- Write a query to find the top 5 referral sources by conversion rate from a Signups table.
- Write a query using EXISTS to find suppliers who have never had a late delivery.
- Write a query to detect gaps in a sequential invoice_number column.
- Write a query to find all products whose price increased in the last price update compared to the previous one.
- Write a query to calculate month-over-month growth rate in active users from a DailyActiveUsers table.
- Write a query to return the department with the highest average tenure of employees.
- Write a query to find all orders placed on weekends versus weekdays and compare average order value.
- Write a query to find customers who upgraded their subscription plan more than once in the last year.
- Write a query to return the top 10% of sales reps by revenue generated in Q1.
- Write a query using a CTE to calculate a 7-day moving average of website visits.
- Write a query to find all patients who missed at least two scheduled appointments in the past year.
- Write a query to identify employees who have never taken a single day of leave in the last two years.
- Write a query to compute year-over-year revenue comparison for each region using self-joins.
- Write a query to find the longest streak of consecutive days a user logged into an app.
- Write a query to identify vendors whose invoice amounts differ by more than 15% from their historical average.
- Write a query to find all students who scored above the class average in more than 3 subjects.
- Write a query to detect accounts with more than 5 failed login attempts within a 10-minute window.
- Write a query to find the second most frequently ordered item for each customer.
- Write a query to identify products frequently bought together, based on an OrderItems table.
- Write a query to find the average time between a support ticket being opened and first responded to, grouped by priority.
- Write a query to find the top-selling product in each store location for the current quarter.
- Write a query to list all foreign keys referencing a given table in a schema (engine-specific system tables allowed).
- Write a query to compute the cumulative distinct count of new customers acquired each month.
Answer
Foreign key relationships aren't visible in a normal data table - they're stored in the database's own metadata (system catalog), which needs an engine-specific query to inspect.
Solution (PostgreSQL / Information Schema Standard)
SELECT
tc.constraint_name,
tc.table_name AS referencing_table,
kcu.column_name AS referencing_column,
ccu.table_name AS referenced_table,
ccu.column_name AS referenced_column
FROM information_schema.table_constraints tc
JOIN information_schema.key_column_usage kcu
ON tc.constraint_name = kcu.constraint_name
JOIN information_schema.constraint_column_usage ccu
ON tc.constraint_name = ccu.constraint_name
WHERE tc.constraint_type = 'FOREIGN KEY'
AND ccu.table_name = 'Customers';Step by Step
information_schema.table_constraintslists every constraint in the database, filtered here to onlyFOREIGN KEYtype constraints.key_column_usageidentifies which table and column each constraint actually lives on (the referencing side).constraint_column_usageidentifies what that constraint ultimately points to (the referenced side) - filtering this to'Customers'finds every foreign key anywhere in the schema that references that specific table.
Engine-Specific Alternative: MySQL
SELECT table_name AS referencing_table, column_name AS referencing_column,
referenced_table_name, referenced_column_name
FROM information_schema.key_column_usage
WHERE referenced_table_name = 'Customers'
AND table_schema = DATABASE();MySQL's key_column_usage conveniently includes the referenced table/column directly in one table, unlike the standard three-table join required for full ANSI-compliant information_schema usage - a good example of why "engine-specific system tables allowed" is explicitly part of this question's wording.
Key Exam Traps
- There's no universal SQL syntax for this - metadata queries are inherently engine-specific, and stating that clearly (rather than presenting one dialect's syntax as if it were universal) shows real database experience.
- information_schema vs engine-native catalogs: Some engines (like PostgreSQL) also expose a richer native
pg_catalogthat some DBAs prefer over the more limited ANSI-standardinformation_schema- worth mentioning as an alternative source of the same information. - Schema/database scoping: Forgetting to filter by the current schema or database (as the MySQL example does with
table_schema = DATABASE()) can return foreign keys from unrelated schemas sharing the same table name, on multi-schema/multi-database servers.