TIL: SQL Window Functions (and why Amazon wouldn’t publish my book review)

Tom Deneire
2 min readMay 25, 2023
Cover “SQL Window Functions Explained” by Anton Zhivanov

SQL Window Functions Explained

Last weekend I took some time to dig into SQL window functions. Being an avid user of SQL (especially SQLite), I figured it was high time I did something about my staggering lack of knowledge on the topic 😊

Moreover, I was fortunate enough to receive a gift copy of “SQL Window Functions Explained” from the author Anton Zhivanov:

So there were no more excuses!

Having read and thoroughly enjoyed the book, I wanted to publish a five-star review on Amazon, but, to my surprise, I wasn’t able to. Amazon community guidelines don’t allow you to write reviews if you don’t meet certain criteria, such as spending at least $50 in the past year. Which I haven’t…


So, if I can’t share my review on Amazon, I might as well do it here. In short, this is a really good book and a must for anyone who is looking to do some serious SQL’ing!

“SQL Window Functions Explained” is an excellent book on a topic that is “probably the most confusing part of SQL” (p. 16).

It offers 296 pages of well-written explanations and exercises about window functions themselves (part 1), frames (part 2) and more complex analysis, namely financial analysis, clustering and data cleaning (part 3). The author’s style is to-the-point and succinct, but also encouraging and even quite funny!

One of the best parts of the book is that it contains numerous, step-by-step pictures and graphics showing how the data is transformed, together with an explanation in plain English of what is happening. There is a lot of attention to practice — much aided by the fact that the author also provides his own online playground Sqlime, so there is no need to install anything to practice.

The examples are well-chosen and throughout the book, the same dataset is used as often as possible, so that the reader quickly becomes familiar with the data. Finally, the book also pays attention to the differences between SQL dialects (PostgreSQL, MySQL, SQLite, Oracle and MS SQL).

So, all in all, this is an essential tool to master what the author rightly calls “an entire mini-language within regular SQL. And, frankly, not the easiest one” (p. 296).

Hi! 👋 I’m Tom. I’m a software engineer, a technical writer and IT burnout coach. If you want to get in touch, check out https://tomdeneire.github.io