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.