之前没接触过OLAP的东西,今天发现客户过来的query含有这个功能,就顺便查看一下造点test case。
看了半天SQL reference,一头雾水;
看了几个国内的blog,一头雾水;
后来看了个英文blog,豁然开朗!这功能真是坑爹!
简单记录如下:
ROW_NUMBER(), RANK(), DENSE_RANK() 均是用来给结果加上类似于行标的一串数字;
不同在于,ROW_NUMBER加顺序数字12345;
RANK是奥运会规则给名次,如果并列第一,那就是给11345,并列第二就给12245;
DENSE_RANK是不留空隙的给名次,如果并列第一,那就是给11234,并列第二就给12234;
这么简单的东西,我不明白为什么这么多人写那么复杂…… |