如何在SQL Server中对整个结果集进行排名?

时间:2016-02-15 03:04:43

标签: sql-server rank

看到类似的RANK()问题,但我不确定如何设置它的OVER部分。

这是我当前的查询,按最高总降额对项目进行排序:

SELECT c.CONTID, COUNT(*) AS 'Total'
FROM CUSTOMER c
LEFT JOIN CLOGS1516 h
ON c.SERIALNO = h.SERIALNO
LEFT JOIN CUSTUFLD u
ON c.SERIALNO = u.SERIALNO
WHERE EVTYPE = 1
AND DATEADD(minute, OFFSET, h.EVDATE) BETWEEN '2016-01-25' AND '2016-02-21'
AND u.VALUE LIKE 'Retail'
GROUP BY c.CONTID
ORDER BY [Total] DESC

上面的示例输出是:

CONTID  Total
109     105
084     88
589     86
610     68
415     58

返回的行总数约为300。我现在正试图排名"排名"每条记录根据其总数与其他项目进行比较。不确定我是否在与上述相同的查询中执行此操作,或者它是否是排序的子查询。我第一次尝试在SQL本身进行排名而不是PHP端。

1 个答案:

答案 0 :(得分:0)

谢谢@ZLK - RANK()OVER(ORDER BY COUNT(*))就是我想要的。在我的SELECT行中添加它并且排名适当。