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

Sql server 如何在SQL Server中对整个结果集进行排名?,sql-server,rank,Sql Server,Rank,看到了类似的RANK()问题,但我不确定如何设置它的结束部分 这是我当前的查询,它按最高总降序对项目进行排序: 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,

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

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

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端进行排名。

谢谢@ZLK-RANK()OVER(orderbycount(*)是我想要的。在我的选择行中添加了它,并进行了适当的排名。

您是否只是在(按计数(*)排序)上查找
RANK()
?看起来很像!我在里面加了一个“DESC”,这就得到了我所需要的。我几乎不知道该把这条线放在哪里。进行了一些尝试和错误,但似乎正在工作!