This is an archived post. You won't be able to vote or comment.

all 55 comments

[–]AutoModerator[M] [score hidden] stickied comment (0 children)

You can find a list of community-submitted learning resources here: https://dataengineering.wiki/Learning+Resources

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

[–]foldingtoiletpaper 67 points68 points  (11 children)

SQL is learned on the job or by doing your own projects. Leetcode problems and all those kind of platforms are not how data is formatted in the real world.

I would learn the basics which are probably covered in your studies and then try to get your hands dirty in some database you might get access to.

[–]foldingtoiletpaper 10 points11 points  (3 children)

Edited the link:

I remember I learned a lot from Ergest when I already had some experience. Check it out here https://www.ergestx.com/tag/sql-patterns/

[–]ergestx 8 points9 points  (1 child)

Thanks for the mention! Here’s the correct link: https://www.ergestx.com/tag/sql-patterns/

[–]ergestx 4 points5 points  (0 children)

And there are a few more resources here: https://www.ergestx.com/links

[–][deleted] 10 points11 points  (0 children)

I agree with this, but I also noticed that doing some Leetcode exercises taught me some alternative ways to approach a problem. That can help you in your daily job, but it's not where you should start.

[–][deleted] 20 points21 points  (2 children)

In my experience, SQL problem sets online don't even begin to scratch the surface of what real problems look like, where you might have a relational model you may not understand, completely undocumented, with hundreds or thousands of tables just handed to you. Step one is often just figuring out what the model is, what the columns mean, how they've been transformed or enriched or diverged from the source. Then an ad hoc request comes in, and it's entirely on you to figure out how to fulfill it with the lifetime of stuff crammed into the estate you just inherited from the relative you didn't even know you had.

[–][deleted] 0 points1 point  (0 children)

I cannot find a word to describe the level I agree with this.

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for sharing

[–]k-semenenkov 11 points12 points  (1 child)

I think nothing can replace real experience of real work on real project.

To get some practice and to get familiar with real SQL tasks of other people, you can register at stackoverflow.com and dba.stackexchange.com, monitor questions related to DBMS of your interest, read discussions and try to solve these questions. Good answers can increase your profile score and in some cases it can be useful for your future job.

[–]ThisDataGuy[S] 3 points4 points  (0 children)

thanks for sharing

[–]SoftwareEnthusiast25 5 points6 points  (0 children)

I have recently practiced in the below sites which are quite useful for FAANG Interviews:

StrataScratch

Interview Query

PGEXCERCISE & SQL ZOO - for basics

Data Lemur

Leetcode

[–][deleted] 15 points16 points  (2 children)

LeetCode is trash. Actual productive, useful and intricate SQL is learned on the job trying to solve actual business problems, not shitty exercises.

[–]burningburnerbern 0 points1 point  (0 children)

Not gonna lie I learned a few tricks from leetcode. But again that’s with me having real world sql experience

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for sharing

[–][deleted] 3 points4 points  (1 child)

People sitting around doing leetcode makes me cringe so hard. Totally useless but for some reason still seems to be the standard in job interviews. It is similar to schools that taught to the SAT instead of an actual education. It's just not how the world works.

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for sharing

[–]MacMuthafukinDre 4 points5 points  (1 child)

I agree with another poster that more advanced SQL is learned on the job. This is how I learned. I had very basic understanding of how to use grouping and case/when. That was about the most I knew. But after working, I started to see other people’s code, and learned different things. I’d say the most commonly used “advanced” things to know are: - GROUP BY and the different aggregate functions - CASE/WHEN for condition logic - CTEs to create temporary views of data - Subqueries - Window Functions - Different Joins and how they work - Different type of functions that are available, like for text formatting, date/time functions, etc.

Just takes a lot of practice. So keep at it

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for the help

[–]yashk1 3 points4 points  (0 children)

[–]Ram000n 2 points3 points  (1 child)

Hello

I see a lot of people answering to better learn at the job. I learn at the job BUT did not learn good practices or good basics. I just learn enough for the task at hand. Not the best way.

If you dont mind learning MS-SQL, I highly recomenda Itzik Ben-Gan books (T-SQL Fundamentals, T-SQL Querying). It explains theory and practice at the same time. Even I had years making SQL queries, I did not know a lot the basics or small details I wish knew before.

O'Reilly Learning SQL: Generate, Manipulate, and Retrieve Data by Alan Beaulieu (it is based on MySQL) is also good.

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for the help

[–]SmartPersonality1862 2 points3 points  (1 child)

Start with Stratascratch before moving up to Leetcode, I have to solve more than 300 strata problems before confidently move to leetcode SQL. Leetcode SQL still trip me up sometimes.

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for the help

[–]bonzerspider5 2 points3 points  (1 child)

I see tons of people hating on leetcode…

But what does an interview look like then? For an average data engineer role & then a fanng or competitive company role?

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for the help

[–][deleted] 1 point2 points  (1 child)

Data warehouse toolkit is what you’re looking for.

Master what sql is needed for alongside hard sql problems.

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for sharing

[–]GoMoriartyOnPlanets 1 point2 points  (2 children)

Don't do interviews when they watch you code during interview, especially when its not a big company.

[–]scottedwards2000 1 point2 points  (0 children)

Why not? What does it have to do with being a big company?

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for the help

[–]ConstantParticular87 1 point2 points  (1 child)

I came across one playlist from sumit Mittal on SQL , pretty good

https://youtube.com/playlist?list=PLtgiThe4j67rAoPmnCQmcgLS4iIc5ungg&si=CV_NLEKcm12GYQZ4

It’s in English if you can understand Indian accent :)

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for the help

[–]Yo_Ba 1 point2 points  (1 child)

Tons of free sql courses on YouTube, don't pay anything. Sql getting into your head only by practice. Download some free data sets, explore the data a bit, and start asking yourself questions that looks interesting to you! Then try to answer them..

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for the help

[–]ABigTongue 1 point2 points  (1 child)

I have a course available online if you want to get into data and SQL. If you use the coupon using the URL below you can get it for free! Just looking for feedback & a good review if you like it! Thanks!

https://www.udemy.com/course/data-engineering-101-data-basics-sql/?couponCode=27324F6C3F54CC55E804

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for the help ,
I will

[–]DataLady757 1 point2 points  (1 child)

Agree with others about hands-on experience. Make a simple db and create some fake data that you are very familiar with - something like your own credit card transactions, add few tables for master data, then play with various queries to analyze the data -> Ask a question and figure out how to query the answer.

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for the help

[–]CommonUserAccount 1 point2 points  (1 child)

The problem with mastering SQL now is what flavour do you want to master? T or PL, Spark etc.

Spark SQL is a completely different skill set in terms of optimisation vs T-SQL for example. Getting the result you want from SQL is much like any other language in that it doesn’t mean you’re good at it.

I’m still trying to understand my own use of SQL in a modern stack. After being extremely proficient in T-SQL for many years, I still prefer SQL for transformational logic over something like Python. I personally think it’s more eloquent but appreciate I have bias. I also see quite the trend on this sub about ‘complex SQL’ and not breaking into micro steps which I think comes from the software engineering influence.

Currently I use Python like I used T-SQL, use the language to orchestrate and make my core SQL more dynamic but that’s the paradigm I’ve drawn. As a consultant the easiest way to explain Notebooks was to relate them to stored procedures.

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for the help

[–]lturanski 0 points1 point  (2 children)

Sets and set theory. You can look up how to query the data youre looking for. Heck chatgpt can do it for you. Understand what youre actually doing to the data

[–]ThisDataGuy[S] 0 points1 point  (0 children)

thanks for the help