- MySQL – Window Functions
Aggregating without collapsing the rows. OVER (PARTITION BY ... ORDER BY ...), ROW_NUMBER, RANK and DENSE_RANK and the difference ties make, LAG and LEAD for comparing a row to the one before it, running totals with a frame clause, NTILE, and the top-N-per-group problem — which is genuinely awkward without window functions and three lines with them.
- LeetCode 47 – Permutations II
Permutations with duplicates, and the extra line is a different extra line from the one Combination Sum II uses — which catches people who think they already learned this trick. With no start index, used[] is the only signal of depth, so the rule becomes !used[i-1]. All three de-duplication rules compared side by side.
- MySQL – Common Table Expressions (WITH)
WITH, added in MySQL 8, and the reason a long query stops being unreadable. A CTE versus a derived table versus a view, chaining several CTEs so each step is named, referencing one twice, and RECURSIVE — walking a parent-child tree and generating a gap-free date series to report on days that had no orders at all.
- AWS – RDS: Managed Databases and What Managed Means
What RDS takes off your hands and what it very much does not. Multi-AZ is failover and not a read replica — the single most expensive misunderstanding in the service — plus parameter groups, subnet groups and the security group rule that is the reason you cannot connect. Backups, PITR and the retention window that defaults to a number you would not choose, and how to restore without praying.
- MySQL – Subqueries
A query inside a query. Scalar subqueries in the select list, subqueries in WHERE with IN, EXISTS and the comparison operators, derived tables in FROM and why they need an alias, correlated subqueries and why they are the expensive kind, the NOT IN trap that returns nothing at all when the inner query yields a NULL, and when to reach for a join instead.