WHERE clause expressiveness: can a WHERE condition reference multiple values/columns and combine predicates (using AND/OR/IN), or is it restricted to a single value?
-
AIncorrect
-
BCorrect
-
CValid only with subqueries
-
DRequires HAVING for multi-value filters
-
EWorks only with numeric equality
Answer
Correct Answer: Incorrect
Explanation
Introduction / Context:The WHERE clause filters rows before projection and grouping. This question checks whether WHERE can express complex conditions or is limited to a single value test.
Given Data / Assumptions:
- Standard SQL boolean operators are available: AND, OR, NOT.
- Set membership and subqueries can be used (IN, EXISTS).
- Predicates may involve multiple columns and expressions.
Concept / Approach:WHERE is fully expressive for row filtering: WHERE (status IN ('NEW','PENDING')) AND (amount > 100) AND (region = 'EMEA'). It can compare column-to-column, column-to-expression, and even include scalar subqueries. It is not restricted to a single value comparison. WHERE applies before GROUP BY; HAVING filters groups after aggregation.
Step-by-Step Solution:
List all business rules to filter rows.Translate each rule into a predicate.Combine predicates with AND/OR, and use parentheses for clarity.Use IN/EXISTS for set logic and subqueries when needed.Verification / Alternative check:Compare counts when applying individual predicates versus the full combined WHERE to ensure logic matches requirements.
Why Other Options Are Wrong:
- Limiting WHERE to a single value is incorrect.
- Subqueries are optional; many cases use literals or joins.
- HAVING is not required for multi-value filters; it is for post-aggregation filtering.
- WHERE supports many data types and operators beyond numeric equality.
Common Pitfalls:Ambiguous logic from missing parentheses, and confusing WHERE vs. HAVING. Always test boundary conditions and NULL handling.
Final Answer:Incorrect