u/sumiitCodes

Day 34 — 8 more Hard JOIN questions (93/100)

Finished 8 more Hard questions from my 100-question lab today. Some of the ones I worked through:

  • Pairs of employees who are in different departments but work on the same project together. I self-joined assignments on project_id and used a1.emp_id < a2.emp_id to stop mirrored duplicates (A-B and B-A), then joined to employees twice and filtered e1.dept_id <> e2.dept_id
  • Departments ranked by average hours worked per employee, which chains departments → employees → assignments and aggregates by department
  • Employees whose manager works in a different department than they do, a self-join on employees comparing dept_id on both sides

The < trick for removing mirrored pairs was new to me today. I’d been using DISTINCT for that kind of thing, and this is cleaner.

7 left. Does anyone have a favorite pattern for ranking queries in MySQL? I haven’t done window functions properly yet and wondering if they’d make the “ranked by” questions easier.

reddit.com
u/sumiitCodes — 4 days ago

Day 32 + 33 / 116 — Combined day: 15 Hard JOIN questions in one sitting (85/100)

Sorry guys, I missed Day 32, so to make up for it, I combined both days’ work on Day 33.
I spent the entire day solving SQL questions, pushing myself to the hard level.

I did 15 Hard-level questions from my 100-question JOIN lab, and they’re clearly harder than the Medium ones. Some highlights:

  • Departments that have at least one employee earning more than every employee in Sales, solved with GROUP BY dept_id and HAVING MAX(salary) > (SELECT MAX(salary) ... WHERE dept_id = 2)
  • Flagging each employee as “Above Average” or “Below or Equal” using a CASE expression against the company average
  • A department report with employee count, project count, and total combined project budget. My first attempt used UNION ALL and threw Error 1222 (different number of columns). The fix was to aggregate employees and projects separately in subqueries, then join them on dept_id

That last one taught me the most. Employees and projects are two different one-to-many relationships, so joining them directly would multiply the counts. Aggregating each side first is the safer pattern.

15 questions left. Any tips for “compared to every/all” style queries are welcome.

reddit.com
u/sumiitCodes — 5 days ago

Day 26 — Only 5 Medium JOIN questions today, leaned hard on paper diagrams

Slower day today — got through just 5 Medium-level JOIN questions, down from 10 the last session. These ones were genuinely trickier.

What helped was going back to something I mentioned before: drawing the full schema by hand on paper. This time I mapped out every table (departments, employees, projects, assignments) with their columns and the FK relationships between them, before writing a single line of SQL. Having that visual made it much easier to reason through which joins I actually needed and in what order.

Not every day is going to be a big-number day, and I think that's fine. Some questions genuinely need more time to actually understand, not just solve.

reddit.com
u/sumiitCodes — 12 days ago

Day 25 — 10 Medium JOIN questions done, drawing on paper to untangle them

Started the Medium section of my 100-question JOIN lab today and completed 10. A clear step up from Easy:

  • Manager report counts — self-join employees to themselves, GROUP BY manager, COUNT direct reports
  • Departments with average salary above 55,000 — JOIN + GROUP BY + HAVING
  • Multi-join reports combining employee, department, and manager info in a single query

Hit a few real errors along the way (unknown column in an aggregated query, missing GROUP BY columns), which is becoming a normal part of the process at this point. What actually helped most was going back to the advice from a while back — sketching the tables and the join logic on paper before writing the query. Once I can see it visually, translating it into SQL gets a lot easier.

20 questions into Medium/Hard combined now. Noticeably slower pace than Easy, but each one is teaching me something the easy ones didn't.

reddit.com
u/sumiitCodes — 13 days ago

Day 24 — Finished all 30 "Easy" JOIN questions

Completed the entire Easy section of my 100-question JOIN lab today (30/30). Covered a good mix:

  • Multi-table joins connecting employees → assignments → projects
  • Self-joins for employee-manager reports
  • Joins combined with WHERE filters (e.g., only showing assignments with hours_worked > 50)
  • Ran into a couple more real errors (an unknown column reference this time) and debugged through them myself

Genuinely the most satisfying session so far. These are the exact same kinds of queries that felt genuinely hard two to three weeks ago, and now they're coming together without much friction. Moving into the Medium difficulty section next — already glanced at a few and they look noticeably harder, mostly around finding "zero match" cases (like departments with zero employees), so curious to see how that goes.

reddit.com
u/sumiitCodes — 14 days ago

Day 22 — 10/100 JOIN questions done, one dry-run with GPT

Started actually working through my 100-question JOIN lab today. Got through 10:

  • 9 I solved independently
  • 1 I genuinely got stuck on, so I had GPT dry-run the query with me — walking through what each JOIN step was actually doing row by row, rather than just handing me the fixed query

This is honestly the first day JOINs have felt satisfying rather than effortful. The visualizing-the-table issue I mentioned a while back feels noticeably better after actually building my own dataset and running queries against it repeatedly.

90 questions to go, mixing in easy/medium/hard as I work through them.

reddit.com
u/sumiitCodes — 16 days ago

Day 21 - Setting up the database for my 100-question JOIN drill

Since JOINs are the topic I'm weakest at, I made a 100-question practice set (easy, medium, hard). Today was the setup day:

  • Created the database in MySQL Workbench
  • Built four tables: departments, employees, projects, assignments (with primary/foreign keys)
  • Wrote and ran the INSERT scripts for sample data in all four tables, including the employee-project assignments with hours worked
  • Checked the Action Output panel to confirm each statement ran cleanly

Nothing fancy, but I've learned that a well-designed dataset matters a lot for JOIN practice. You need some departments with no employees, and projects with no assignments, or you can't tell LEFT and RIGHT JOINs apart properly.

Starting the actual questions tomorrow. Any tips on getting better at visualizing multi-table JOINs are welcome.

reddit.com
u/sumiitCodes — 17 days ago

Day 18 — Completed Practice Set #2 (real-world scenario style)

Finished the last part today and with it, wrapped up my entire second practice set.

What made this set different from the first: every question was framed as an actual request from a manager, HR, or client — "payroll rejected a negative salary insert," "the CFO wants to see expensive departments," "HR wants an org chart" — instead of plain SQL instructions. I had to figure out what query actually solves the described problem, with the exact technical task given in brackets only as a fallback if I got stuck.

Genuinely think this format taught me more than straightforward "write a query that does X" practice did. Translating a vague, realistic business ask into the correct SQL felt a lot closer to what the job actually involves, and it's noticeably easier for me to write and reason through queries now compared to when I started this set.

2 full practice sets complete. Planning to do a review pass across both before moving into the Java backend track.

reddit.com
u/sumiitCodes — 19 days ago

Day 13 — Practice set Parts 5 & 6: Aggregates and Joins

Covered two solid parts today:

Part 5 — Aggregate Functions, GROUP BY, HAVING:

  • Total employees per department (GROUP BY + COUNT)
  • Average salary per department, filtered to only show departments averaging above 50,000 (GROUP BY + HAVING)
  • Highest and lowest paid employees overall (MAX/MIN)
  • Total project budget per department, sorted highest to lowest
  • Managers with 2+ direct reports (GROUP BY + HAVING on a self-referencing relationship)

Part 6 — Joins:

  • INNER JOIN: employee names with department names
  • LEFT JOIN: all departments including ones with zero employees (NULLs shown)
  • RIGHT JOIN: all projects with their department, including unmatched cases
  • FULL JOIN equivalent — since MySQL doesn't support FULL JOIN natively, used UNION of LEFT and RIGHT JOIN to simulate it. Good practical workaround to actually learn hands-on
  • SELF JOIN: employees alongside their manager's name
  • 3-table join: employees + assignments + projects to see who's working on what
  • UNION vs UNION ALL: combining employee lists from two departments, with and without duplicates

The FULL JOIN workaround in MySQL was the most useful thing I learned today — didn't know MySQL lacked native FULL JOIN support until I had to actually solve around it.

1 part left in this set — finishing it up next.

reddit.com
u/sumiitCodes — 25 days ago

Day 6 — Full revision day from handwritten notes

No new topics today — spent the session revising everything I've covered this week straight from my handwritten notes:

  • SELECT, WHERE, ORDER BY
  • All JOIN types (inner, left, right, full, self) + UNION/UNION ALL
  • Aggregate functions + order of query execution
  • Insert/Update/Delete rows, Create/Alter/Drop tables

Honestly this felt just as useful as a learning day. A few things I'd half-understood earlier in the week — especially the query execution order and when to use UNION vs UNION ALL — felt much more solid after going back over them without any new material competing for attention.

Planning to start on subqueries and CTEs next, feeling like the fundamentals are in a genuinely good place now.

reddit.com
u/sumiitCodes — 1 month ago

Day 4 — SQL Aliases + full JOIN practice round

Two things today:

  • Learned Aliases (AS keyword) via W3Schools — renaming columns/tables to make queries more readable, especially useful once you're joining multiple tables and column names start colliding or getting long
  • Went back through SQLBolt and practiced every JOIN type again — inner, left, right, full, self — this time focusing on writing them from scratch rather than following along

Aliases felt like a small topic on paper but immediately made my JOIN queries from earlier this week way easier to read back. Definitely one of those "why didn't I use this from day 1" moments.

Feeling solid on JOINs now after this round of practice. Moving into aggregate functions and GROUP BY next.

reddit.com
u/sumiitCodes — 1 month ago

Day 4/116 — SQL Aliases + full JOIN practice round

Two things today:

  • Learned Aliases (AS keyword) via W3Schools — renaming columns/tables to make queries more readable, especially useful once you're joining multiple tables and column names start colliding or getting long
  • Went back through SQLBolt and practiced every JOIN type again — inner, left, right, full, self — this time focusing on writing them from scratch rather than following along

Aliases felt like a small topic on paper but immediately made my JOIN queries from earlier this week way easier to read back. Definitely one of those "why didn't I use this from day 1" moments.

Feeling solid on JOINs now after this round of practice. Moving into aggregate functions and GROUP BY next.

reddit.com
u/sumiitCodes — 1 month ago

Day 2 — Worked through SQLBolt's SELECT fundamentals

Today's focus was solidifying the basics before going further. Covered on SQLBolt:

  • Introduction to SQL
  • SELECT queries 101
  • Queries with constraints (Part 1 & Part 2)
  • Filtering and sorting query results
  • SQL Review: Simple SELECT Queries

The "constraints" lessons were useful for practicing comparison operators and combining conditions in WHERE clauses — felt more comfortable writing multi-condition filters by the end than I expected going in.

Treating this as building a really solid base before circling back to JOINs and moving into aggregations next.

reddit.com
u/sumiitCodes — 1 month ago

Day 2/116 — Worked through SQLBolt's SELECT fundamentals

Today's focus was solidifying the basics before going further. Covered on SQLBolt:

  • Introduction to SQL
  • SELECT queries 101
  • Queries with constraints (Part 1 & Part 2)
  • Filtering and sorting query results
  • SQL Review: Simple SELECT Queries

The "constraints" lessons were useful for practicing comparison operators and combining conditions in WHERE clauses — felt more comfortable writing multi-condition filters by the end than I expected going in.

Treating this as building a really solid base before circling back to JOINs and moving into aggregations next.

reddit.com
u/sumiitCodes — 1 month ago

Day 1 — Started learning SQL (MySQL)

Kicked off my 116-day journey today with the database track.

What I did:

  • Went through a beginner-friendly MySQL tutorial covering the basics
  • Took detailed notes instead of just passively watching
  • Went back and revised everything at the end of the day to actually retain it

Nothing groundbreaking yet — Day 1 is really about building the habit of consistent, focused learning rather than covering a lot of ground. Planning to move into SELECT/WHERE and filtering queries next.

Will keep posting updates as I go — open to any tips on solidifying SQL fundamentals early on.

reddit.com
u/sumiitCodes — 1 month ago

Day 1 — Started learning SQL (MySQL)

Kicked off my 116-day journey today with the database track.

What I did:

  • Went through a beginner-friendly MySQL tutorial covering the basics
  • Took detailed notes instead of just passively watching
  • Went back and revised everything at the end of the day to actually retain it

Nothing groundbreaking yet — Day 1 is really about building the habit of consistent, focused learning rather than covering a lot of ground. Planning to move into SELECT/WHERE and filtering queries next.

Will keep posting updates as I go — open to any tips on solidifying SQL fundamentals early on.

reddit.com
u/sumiitCodes — 1 month ago

Starting a 116-day journey to become a software engineer — Day 0 (final year BCA student)

Hey everyone,

I'm in the final year of my BCA, and starting today I'm committing to 116 days (Sept 7 – Dec 31) of focused, practical learning instead of just studying for exams. Posting here for accountability and to connect with others doing the same.

Roadmap — 3 tracks, done in sequence, each building on the last:

  • T1 – Database (SQL): fundamentals through advanced queries, ending with a schema design project
  • T2 – Backend (Java): core Java through Spring Boot, building a REST API on top of the T1 database
  • T3 – Frontend (HTML/CSS/JS): fundamentals through a full UI that connects to the Java backend

Method for each track: tutorials first → practice problems → a project that applies it. By the end I should have one complete full-stack project built from scratch.

I'll post weekly recaps here, and daily bite-sized updates on X/Instagram if anyone wants to follow along there too. Open to feedback on the roadmap or resource recommendations — thanks for reading!

reddit.com
u/sumiitCodes — 1 month ago

Starting a 116-day journey to become a software engineer — Day 0 (final year BCA student)

Hey everyone,

I'm in the final year of my BCA, and starting today I'm committing to 116 days (Sept 7 – Dec 31) of focused, practical learning instead of just studying for exams. Posting here for accountability and to connect with others doing the same.

Roadmap — 3 tracks, done in sequence, each building on the last:

  • T1 – Database (SQL): fundamentals through advanced queries, ending with a schema design project
  • T2 – Backend (Java): core Java through Spring Boot, building a REST API on top of the T1 database
  • T3 – Frontend (HTML/CSS/JS): fundamentals through a full UI that connects to the Java backend

Method for each track: tutorials first → practice problems → a project that applies it. By the end I should have one complete full-stack project built from scratch.

I'll post weekly recaps here, and daily bite-sized updates on X/Instagram if anyone wants to follow along there too. Open to feedback on the roadmap or resource recommendations — thanks for reading!

reddit.com
u/sumiitCodes — 1 month ago