SQL for analytics: a 24-week plan at 5 hours a week, starting free and ending in a portfolio project
Bottom line
I read "SQL for analytics" as a beginner-to-job-ready track for a data analyst: write queries that answer business questions against relational tables. At 5 hours a week (the time you gave), I estimate about 24 weeks, or 120 hours, from zero to independent work. That is my estimate, built from the course hours below, not a figure from any source. The best starting resource is the free Kaggle Intro to SQL course, listed at 3 hours and beginner level (Class Central listing, checked 2026-10-05). This week, finish that course, then open SQLBolt lesson 1.
Assumptions: you have no coding background. You did not name a SQL dialect, so I assume PostgreSQL and standard SQL, because PostgreSQL is flagged as a "Hot Technology" for the Data Scientists occupation in O*NET (checked 2026-10-05). Budget is not stated, so the plan is free first, with one paid option. If you have more than 5 hours, divide the weeks below by the extra factor.
What good looks like
No single public standard defines "SQL for analytics". O*NET lists database tools for the related Data Scientists occupation but gives no skill syllabus for SQL itself. I therefore took the target skills from the syllabi of the courses below and wrote them as four capabilities. This is my own synthesis.
- Query a single table with confidence. Select, filter, sort, group and aggregate, as taught in the Select Star SQL chapters on query structure and aggregation and the Kaggle Intro to SQL syllabus (Select/From/Where, Group By/Having/Count, Order By).
- Combine tables correctly. Pick the right join and know which rows survive. Joins are the fourth chapter of Select Star SQL and the last unit of the Kaggle course.
- Structure longer queries. Use CTEs (the "WITH" clause), subqueries and window functions. The DataLemur tutorial lists a second lesson series (201 onward) for these intermediate topics.
- Check your own results. Reconcile counts, handle NULLs and spot duplicate rows. The StepByStepSQL list of common mistakes shows the usual failure points, because these errors return a wrong answer without raising an error.
KEY TAKEAWAY: Competence here means correct answers on multi-table questions, not just syntax recall.
Staged curriculum
Weeks equal hours divided by 5. Where a source gives no hours, the hours are my estimate and are marked so.
| Stage | Weeks | Goal | Core resource | Hours | Milestone |
|---|---|---|---|---|---|
| 1. Foundations | 1 to 3 | Read and write basic queries | Kaggle Intro to SQL, SQLBolt, Select Star SQL | 15 (3 listed, 12 estimated) | Answer 10 questions on one practice dataset without hints |
| 2. Structured course | 4 to 16 | Joins, cleaning, analysis workflow | Coursera Learn SQL Basics for Data Science | 61 listed (about 12.2 weeks) plus 4 slack = 65 | Finish the specialization capstone work |
| 3. Fluency drills | 17 to 20 | CTEs, window functions, speed | DataLemur tutorial and LeetCode SQL 50 | 20 (estimate) | Solve the LeetCode SQL 50 plan, listed as about 1 month of prep |
| 4. Independent work | 21 to 24 | Portfolio-grade analysis | A public dataset and a PostgreSQL install | 20 (estimate) | One written analysis with the SQL published |
Arithmetic: 15 + 65 + 20 + 20 = 120 hours, and 120 / 5 = 24 weeks. The Coursera total is the sum of the course hours on its page, 16 + 10 + 35 = 61 hours, and 61 / 5 = 12.2 weeks.
A conflict to know about: the same Coursera page says 2 months at 10 hours a week, which is about 80 to 90 hours, while the course cards add to 61. Its FAQ also mentions four courses and 4 to 6 months, while the header says three courses. I plan from the 61-hour card total and keep 4 hours of slack. At 5 hours a week, treat stage 2 as the largest risk to your timeline. If it feels too long, you can skip to stage 3 after stage 1 and return to the course for the topics you miss. That shortens the plan to about 11 weeks (my estimate).
Week-by-week plan for stage 1
Each week is 5 hours. The SQLBolt and Select Star SQL hours are estimates. Select Star SQL says each chapter takes about 30 minutes, and it has four chapters plus challenge questions.
| Week | Tasks | Hours |
|---|---|---|
| 1 | Finish Kaggle Intro to SQL (listed 3 hours). Start SQLBolt lessons from "SELECT queries 101". | 3 + 2 |
| 2 | Complete the SQLBolt lessons and exercises. Write down each clause in your own words. | 5 |
| 3 | Work through the four chapters of Select Star SQL (about 2 hours of reading, rest on exercises). Redo any SQLBolt exercise you needed hints for. Take the milestone check. | 5 |
Best resources
Prices were checked on 2026-10-05 on each page. Where a page did not show a price, I say so.
Free
| Resource | Type | Price (date checked) | Hours | Level | Why it's here |
|---|---|---|---|---|---|
| Kaggle Intro to SQL (top free pick) | Interactive course | Free, free certificate (Class Central listing, 2026-10-05) | 3 | Beginner | Short, hands-on, rated 4.1 from 12 Class Central reviews. One reviewer found the Python wrapper around queries confusing. Kaggle's own page would not load, so details come from Class Central. |
| SQLBolt | Interactive lessons | Free, no price shown (2026-10-05) | Not stated | Beginner | Interactive lessons and exercises in the browser. |
| Select Star SQL | Interactive book | Free of charge, ad-free, no registration (2026-10-05) | About 2 plus exercises | Beginner | Teaches by answering real questions on one dataset. |
| SQLZoo | Exercises | No price shown (2026-10-05) | Not stated | Beginner to intermediate | Graded easy, medium and hard assessments. |
| DataLemur SQL tutorial | Tutorial plus questions | Tutorial reachable without a price shown (2026-10-05). Premium pricing not verified. | Not stated | Beginner to intermediate | Company-style questions with difficulty labels. |
| LeetCode SQL 50 | Practice plan | Premium tier exists; plan price not verified (2026-10-05) | About 1 month (page) | Basic to intermediate | 50 questions as a fixed set. |
| PostgreSQL official tutorial | Documentation | Free | Not stated | Beginner | Needed for installing and running your own database in stage 4. |
Paid or paywalled
| Resource | Type | Price (date checked) | Hours | Level | Why it's here |
|---|---|---|---|---|---|
| Coursera Learn SQL Basics for Data Science (top paid pick) | Specialization | Page says "Enroll for free", but the FAQ says it cannot be taken for free, with financial aid available. Exact fee not shown (2026-10-05). | 61 from course cards | Beginner | Structured, with 414,649 learners enrolled per the page. |
| Google Data Analytics Certificate | Certificate | Page states $49 a month in the US and Canada after a 7-day trial (2026-10-05) | Over 180 hours | Beginner | Only worth it if you want the full analyst path, since SQL is one part. The certificate's "75% report a positive career outcome" figure is Google's own claim. |
Practice projects
- Stage 1: Question set on one dataset. Answer 10 questions on a single table using filters and aggregates. The Select Star SQL challenge questions work for this.
- Stage 1 to 2: Join audit. Take two related tables and count rows under inner and left joins. Explain every difference. This targets join behavior and the COUNT(*) versus COUNT(column) trap.
- Stage 2: Course capstone work from the Coursera specialization.
- Stage 3: LeetCode SQL 50 as a timed fluency set. The plan is built for about one month of prep.
- Stage 3: DataLemur interview-style questions, easy first. Its home page labels questions by difficulty and company.
- Stage 4: Portfolio analysis. Load a public dataset into PostgreSQL, write 8 to 10 queries that use CTEs and window functions, and publish the SQL with a one-page write-up of findings. This is my design, not a source's template.
Communities
I could not verify community size or recent activity this run, so I do not state any numbers.
- r/SQL on Reddit: a commonly used place for query questions. Its page blocked the fetch with a bot check, so size and activity are not verified.
- Stack Overflow, "sql" tag: a question-and-answer site for specific errors. The page did not load, so activity is not verified. A Class Central reviewer suggested asking on forums or Stack Exchange after checking for similar questions.
- Kaggle forums: attached to the Kaggle course. Not fetched, so not verified.
Measuring progress
| Stage | Check | Ready to move on when |
|---|---|---|
| 1 | 10 questions on one dataset, no hints | You get 8 or more right and can say why each clause is there (my threshold) |
| 2 | Course graded work and a self-written join audit | Your join audit explains every row difference |
| 3 | LeetCode SQL 50 progress, timed | You solve easy questions in minutes and can write a CTE from scratch |
| 4 | One published analysis | A reader can rerun your SQL and get your numbers |
Common pitfalls
- Comparing to NULL with an equals sign.
column = NULLreturns unknown, and the rows silently drop out. Use IS NULL. - Using DISTINCT to hide duplicate rows. Duplicates usually come from a join that matches too many rows, so fix the join.
- Treating COUNT(*) and COUNT(column) as the same. COUNT(column) skips NULLs, so totals can come out low.
- Nesting subqueries three or four levels deep. A CTE breaks the logic into named steps. Note this source says its tutorials are compiled from public references, not from professional experience.
- Skipping the wait for hints. This one is my own observation, not a sourced claim: copying answers on interactive sites gives a feeling of progress without skill.
Sources
All pages accessed 2026-10-05.
- Kaggle Intro to SQL on Class Central
- O*NET Data Scientists summary (15-2051.00)
- Select Star SQL
- SQLBolt
- SQLZoo SQL Tutorial
- DataLemur SQL tutorial
- DataLemur home
- LeetCode SQL 50 study plan
- Coursera Learn SQL Basics for Data Science
- Coursera Google Data Analytics Certificate
- PostgreSQL official tutorial
- StepByStepSQL: 10 common SQL mistakes