让我第一个承认我不是最擅长 SQL 的人,这个问题有点难倒。
我需要创建一个算法来返回表中的前 5 条记录。前 5 条记录应通过将 3 列加在一起得出,并返回得分最高的前 5 条记录。
谁能给我一些关于如何做这种声明的指示。
一段时间以来,我一直在处理一些代码,但进展并不迅速。
问候 标记
最佳答案
我刚刚在 SQL Server Management Studio 中尝试了以下操作,它似乎可以满足您的要求:
SELECT TOP 5 * FROM
(
SELECT Value1, (Col1 + Col2 + Col3) AS Rank FROM MyTable
) tmp
ORDER BY Rank DESC
编辑
只是注意到您实际上不需要外部选择并且可以写:
SELECT TOP 5 Value1, (Col1 + Col2 + Col3) AS Rank FROM MyTable
ORDER BY Rank DESC
这已在 SQL Server 2008 中测试。
它在内部选择中从名为 MyTable
的表中选择一列的值和其他三个列的总和。外部选择按所选总和对这些进行排序并取前 5 名。
例子:源表包含如下数据
Value1 Col1 Col2 Col3
V0 0 0 0
V1 1 0 0
V2 2 0 0
V3 3 9 0
V4 4 9 0
V5 5 9 0
V6 6 9 10
V7 7 9 10
内部选择将创建
Value1 Rank
V0 0
V1 1
V2 2
V3 12
V4 13
V5 14
V6 25
V7 26
外层的选择会返回
Value1 Rank
V7 26
V6 25
V5 14
V4 13
V3 12
关于SQL top 5 记录算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15655396/