SELECT COUNT(*) AS total_users FROM users;A basic but essential query for dashboards and sanity checks.
group by, having, count, sum, avg, row_number, lag, running totals, and analytical query patterns in MySQL.
Summaries, counts, totals, averages, and grouped reporting queries.
SELECT COUNT(*) AS total_users FROM users;A basic but essential query for dashboards and sanity checks.
SELECT status, COUNT(*) AS total
FROM orders
GROUP BY status
ORDER BY total DESC;A common reporting pattern for order states, ticket states, and similar grouped data.
SELECT SUM(total_amount) AS gross_revenue, AVG(total_amount) AS avg_order_value
FROM orders
WHERE status = 'paid';Numeric aggregates are core to finance and analytics queries.
Keep only groups that meet aggregate criteria.
SELECT user_id, COUNT(*) AS order_count
FROM orders
GROUP BY user_id
HAVING COUNT(*) >= 5;`HAVING` filters after aggregation, unlike `WHERE`.
Ranking, running totals, and partition-aware analytics.
Rank a user's orders by recency.
SELECT
user_id,
id AS order_id,
created_at,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) AS rn
FROM orders;Helpful for picking latest rows per entity.
SELECT
order_date,
daily_revenue,
SUM(daily_revenue) OVER (ORDER BY order_date) AS running_revenue
FROM daily_order_metrics;Window functions let you keep row-level detail while adding cumulative calculations.
SELECT
order_date,
daily_revenue,
daily_revenue - LAG(daily_revenue) OVER (ORDER BY order_date) AS delta
FROM daily_order_metrics;`LAG` is excellent for trend analysis and time-series deltas.
SELECT
category,
revenue,
DENSE_RANK() OVER (ORDER BY revenue DESC) AS revenue_rank
FROM category_revenue;Unlike `RANK`, `DENSE_RANK` does not skip numbers after ties.