Count how many employees earn above 80000 and how many earn 80000 or below.
Problem Statement
Examples
Input: employees table: +----+---------+--------+ | id | name | salary | +----+---------+--------+ | 1 | Alice | 90000 | | 2 | Bob | 60000 | | 3 | Charlie | 120000 | | 4 | Dana | 75000 | +----+---------+--------+
Output: +--------------+--------+ | high_earners | others | +--------------+--------+ | 2 | 2 | +--------------+--------+
Explanation: The records are grouped by category and the aggregate calculation is applied to produce the summary result.
Complexity
Time Complexity: -
Space Complexity: -
Hints
Editorial & Approach
Problem Overview & Intuition
To solve "Conditional Counting (COUNT with CASE)", we query the relational database engine using declarative SQL. The goal is to count how many employees earn above 80000 and how many earn 80000 or below. By formulating an optimal execution plan with appropriate projection and filtering, the database engine executes the query with minimal overhead.
Step-by-Step Approach
- Analyze Schema: Identify the target tables, necessary foreign keys, and expected output columns.
- Construct Filtering & Logic: Apply row projections to isolate the requested data.
- Format & Order: Ensure columns match the expected project schema in order.
Optimal Implementation (SQL)
SELECT COUNT(CASE WHEN salary > 80000 THEN 1 END) AS high_earners, COUNT(CASE WHEN salary <= 80000 THEN 1 END) AS others FROM employees;
Complexity Analysis
Key Considerations & Edge Cases
- Empty Tables: The query executes safely returning zero rows without syntax error.
- NULL Values: Columns containing NULL values are properly handled by standard ANSI SQL semantics.
- Case Sensitivity: String comparisons and keywords adhere to PostgreSQL/standard SQL rules.