我有一个简单的表,其中包含唯一标识符和每个标识符的计数器值.我需要得到的结果是表格按计数器值排序后特定标识符的位置.
我目前的解决方案是在对结果进行排序时对所有数据执行SELECT,然后通过结果列表查找所需的标识符,我发现它的位置是我想要的排名值.
不幸的是,这需要大型表的大量内存和计算时间.所以我的问题是:是否有一个SQL语句在表被排序后返回特定标识符的位置?
如果您使用的是SQL Server 2005及更高版本,则可以使用RANK()或DENSE_RANK()窗口函数:
SELECT
(your list of columns here),
RANK() OVER(ORDER BY yourcolumnnamehere)
FROM dbo.YourTable
Run Code Online (Sandbox Code Playgroud)
要么:
SELECT
(your list of columns here),
DENSE_RANK() OVER(ORDER BY yourcolumnnamehere)
FROM dbo.YourTable
Run Code Online (Sandbox Code Playgroud)
其他RDBMS(如Oracle)似乎也支持那些窗口函数.
| 归档时间: |
|
| 查看次数: |
2237 次 |
| 最近记录: |