假设我们有一个名为 sales
的表,其中包含列 salesperson
和 amount
,我们想要为每位销售员按照销售额进行排名。
ROW_NUMBER(): 这个例子为每位销售员分配一个唯一的序号,不考虑是否有相同的销售额。
nnnnSELECTn salesperson,n amount,n ROW_NUMBER() OVER (ORDER BY amount DESC) AS row_numnFROMn sales;
nnnnRANK(): 这个例子为销售员按照销售额排名,如果有相同的销售额,则它们会得到相同的排名。
nnnnSELECTn salesperson,n amount,n RANK() OVER (ORDER BY amount DESC) AS ranknFROMn sales;n
nnnnDENSE_RANK(): 这个例子也是为销售员按照销售额排名,但是它会连续分配排名,不会跳过后续的排名。
nnnnSELECTn salesperson,n amount,n DENSE_RANK() OVER (ORDER BY amount DESC) AS dense_ranknFROMn sales;
nnnnNTILE(): 这个例子将销售员分成四个桶(即四等分),假设有400名销售员,需要按销售额取Top100。
nnnnSELECTn salesperson,n amount,n quartilenFROM (n SELECTn salesperson,n amount,n NTILE(4) OVER (ORDER BY amount DESC) AS quartilen FROMn salesn) subquerynWHEREn quartile = 1;n
n
Comments NOTHING