what is the intuition behind the window functions in sql?
2d 15h ago by programming.dev/u/ghodawalaaman in programming@programming.devI have been struggling to understand the window functions. I understand its use case like when you want to rank countries population per continent however the syntax is so weird it doesn't make any sense what actually happening
How does the sql server process this? does it run on every row? is there any benefit of using it over subquery?
sorry if this question is too dumb :(
Think of window functions as a two-layer operation:
Layer 1: Produce all the rows (FROM, WHERE, GROUP BY, HAVING)
Layer 2: For each row, peek at its "neighborhood" (partition) and compute something
The result of Layer 2 is just another column added to each row. Nothing collapses, nothing gets removed. You just get extra computed values based on context and that context is what PARTITION BY, ORDER BY, and the frame clause define.
Thinking windows functions in two layer actually helped, Thank you kind stranger! :)
The main thing is that group by gives you a smaller number of rows than the input, collapsing the data from individual rows into the group rows in the output, while a window function does not change the number of rows - it just allows you to use data from other rows for calculations in each output row
Think of them as operating on the whole column at once.
For example LAG would be like selecting a whole column in excel and copy pasting it one row down
As far as SQL is concerned, all rows are the same. So a window function allows you to operate over multiple rows at once. So I say what I want it to do and how I want it to search e.g. "give me a single row per client_id where the session_date is max" will give me 1 row for each client with the client's newest session. This is the purpose of window functions.