transactions
| id | user_id | amount | txn_date |
|---|
| 1 | 1001 | 25.00 | 2023-07-01 |
| 2 | 1002 | 40.00 | 2023-07-02 |
| 3 | 1001 | 15.00 | 2023-07-03 |
| 4 | 1003 | 60.00 | 2023-07-03 |
| 5 | 1001 | 30.00 | 2023-07-04 |
Scenario
You are migrating analytics queries from MySQL to MS SQL Server and need to verify candidates understand subtle syntax differences, CTE structure, aliases, ordering and equivalence of filtering clauses.
Question
In MySQL the query
SELECT id, COUNT(*) AS transactions
FROM transactions
GROUP BY id
HAVING transactions > 10;
runs, but the same fails in MS SQL Server. Explain why and rewrite a version portable to both engines.
What does the statement "SELECT * FROM A B;" do and why can it be legal SQL?
Given ORDER BY id, ORDER BY id ASC and ORDER BY id DESC, which one produces a different ordering and why?
Provide the correct multi-CTE skeleton that defines two CTEs, A and B, then queries them.
Will the following three predicates return identical rows for a char column containing only upper-case letters? Justify.
a) col IN ('A','B','C')
b) col BETWEEN 'A' AND 'C'
c) col >= 'A' AND col <= 'C'
Hints
Focus on alias scope rules, default sort order, comma vs alias syntax, WITH clause commas, and lexical range comparisons.