If I could ask something related to this question - what is the best way to grok the OVER clause, such as RANK() OVER? I'm having a bit of difficulty trying to really understand how it works and how to use it effectively.
a) row_number over() and partition: in the abstract: https://www.youtube.com/watch?v=-X3eIyZV728
b) applied to customer value analysis: https://www.youtube.com/watch?v=iHxJvF0tZOA
c) applied to time differences (also uses materials from b above) https://www.youtube.com/watch?v=5f8tF4U70Ic
After a while you can write these from scratch and they generally work the 1st or 2nd time, but it takes lots of trial and error at first when setting up the partition and ordering clause within the OVER() expression.