what is the intuition behind the window functions in sql?
from ghodawalaaman@programming.dev to programming@programming.dev on 15 Jun 05:48
https://programming.dev/post/52015488

I 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 :(

#programming

threaded - newest

HelloRoot@lemy.lol on 15 Jun 06:04 next collapse

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.

ghodawalaaman@programming.dev on 15 Jun 06:13 collapse

Thinking windows functions in two layer actually helped, Thank you kind stranger! :)

Feyd@programming.dev on 15 Jun 06:08 next collapse

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

verstra@programming.dev on 15 Jun 15:42 collapse

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