• C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

Learn SQL

Ken Abbott

Managing Director
I keep seeing people asking what courses they need to get jobs in finance. It's not about courses. It's about skills. Want to get the attention of an interviewer? Tell him or her that you're a SQL expert.

My department takes in billions of records per week. The analytics are the dessert. The meat-and-potatoes is the data sifting/cleaning. Come in knowing SQL and you can be useful on day 1.
 
I was just at a Technical Job fair the other day here at Carnegie Mellon and Bloomberg was having on the spot interviews. One candidate was asked if he knew SQL, and he replied that he didn't know what that is. You should have seen the look on the poor recruiter's face...
 
True story and good advice, Ken.
I can trace the majority of my contribution at work to SQL, which I had to learn on the first day at work. I know at least one job at a trading desk at one major IB where you support traders and the first question they ask on the phone is how do you rate your SQL skill.
Maybe we can put up a database online and run a query contest or something.
 
Another excellent resource:

...

SQL indexing is the most effective SQL tuning method and requires the same care as schema design. Yet it is neglected during development. Use The Index, Luke explains SQL indexing form the source code perspective—covering ORM tools like Hibernate or Doctrine.

...

http://use-the-index-luke.com/
 
Is SQL something you can learn right out the gate or should you learn a base language first?

if you know other computer language then it is better as you can grasp it more quickly but being a query language it is very different from others and is lot easier too . You would not need to learn another base language bit you should spend some time grasping the structure of the language and way it is different from others
 
Is SQL something you can learn right out the gate or should you learn a base language first?
Here is a SQL query to find the total number of posts made on a specific Quantnet forum during a period of time, and display the result, ordered by date
C++:
SELECT COUNT(*) AS posts, FROM_UNIXTIME(post.post_date, '%Y-%m-%d') AS date
FROM xf_post AS post
LEFT JOIN xf_thread AS thread ON (thread.thread_id = post.thread_id)
WHERE thread.node_id = 10
AND post.post_date BETWEEN UNIX_TIMESTAMP('2011-09-19 00:00:00') AND UNIX_TIMESTAMP('2011-09-25 00:00:00')
GROUP BY date
ORDER BY date
See, easy as pie ;)
 
MS SQL Server Express is free http://www.microsoft.com/sqlserver/en/us/editions/express.aspx
mySQL is also free http://www.mysql.com/downloads/

You can get some free financial database set off the internet (download from Yahoo Finance for example), import into the database and play with it.

SQL is a way of thinking of how data is structured and their relationship so it's different from say, learning C++. There are books but you will find everything you want online.
 
I'd also suggest SQLite, there are some very good little libraries to access it in C#, and I believe its also well supported in C++. I *think* several of the iphone apps use an sqlite database (your text messages, for example, are stored in an sqlite db), its effectively a single database file, very fast, but only good for one use at a time (i.e. not multi user simultaneous hits on a db).
 
I'd also suggest SQLite, there are some very good little libraries to access it in C#, and I believe its also well supported in C++. I *think* several of the iphone apps use an sqlite database (your text messages, for example, are stored in an sqlite db), its effectively a single database file, very fast, but only good for one use at a time (i.e. not multi user simultaneous hits on a db).

SQLite is a file database and is well suited when you are developing a standalone software apps which can only run with limited capabilities like you mentioned above. e.g. if you want to develop a software like MS Excel to do some calculations and save the results in a small database rather than in a file with unique extension.
 
Here is a SQL query to find the total number of posts made on a specific Quantnet forum during a period of time, and display the result, ordered by date
C++:
SELECT COUNT(*) AS posts, FROM_UNIXTIME(post.post_date, '%Y-%m-%d') AS date
FROM xf_post AS post
LEFT JOIN xf_thread AS thread ON (thread.thread_id = post.thread_id)
WHERE thread.node_id = 10
AND post.post_date BETWEEN UNIX_TIMESTAMP('2011-09-19 00:00:00') AND UNIX_TIMESTAMP('2011-09-25 00:00:00')
GROUP BY date
ORDER BY date
See, easy as pie ;)
Doesn't sort by time?
 
Top