首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL前5条记录算法

SQL前5条记录算法
EN

Stack Overflow用户
提问于 2013-03-27 17:25:46
回答 4查看 2K关注 0票数 1

让我首先承认,我在SQL方面并不是最好的,这个问题有点难住了。

我需要创建一个算法,将返回表中的前5条记录。前5个记录应该通过将3列相加得到,并且应该返回得分最高的前5个记录。

有没有人能给我一些指点,告诉我如何做这样的陈述。

我摆弄一些代码已经有一段时间了,我不能很快地取得任何进展。

尊敬的马克

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-27 17:28:08

我刚刚在SQL Server Management Studio中尝试了以下内容,它似乎可以满足您的要求:

代码语言:javascript
复制
SELECT TOP 5 * FROM
(
     SELECT Value1, (Col1 + Col2 + Col3) AS Rank FROM MyTable
) tmp
ORDER BY Rank DESC

编辑

我只是注意到你实际上不需要外部select,可以这样写:

代码语言:javascript
复制
SELECT TOP 5 Value1, (Col1 + Col2 + Col3) AS Rank FROM MyTable
ORDER BY Rank DESC

这在SQL Server 2008中进行了测试。

它从内部select中名为MyTable的表中选择一列的值和其他三列的总和。外部select按选择的总和对它们进行排序,并取前5个。

示例:源表包含以下数据

代码语言:javascript
复制
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

内部select将创建

代码语言:javascript
复制
Value1    Rank
  V0        0
  V1        1
  V2        2
  V3        12
  V4        13
  V5        14
  V6        25
  V7        26

,则外部select将返回

代码语言:javascript
复制
Value1    Rank
  V7        26
  V6        25
  V5        14
  V4        13
  V3        12
票数 3
EN

Stack Overflow用户

发布于 2013-03-27 17:30:37

这可能会给你想要的效果:

MySQL

代码语言:javascript
复制
SELECT Value1, (Col1 + Col2 + Col3) AS Rank 
FROM MyTable
ORDER BY Rank DESC
LIMIT 5;

SQL

代码语言:javascript
复制
SELECT TOP 5 Value1, (Col1 + Col2 + Col3) AS Rank 
FROM MyTable
ORDER BY Rank DESC;
票数 3
EN

Stack Overflow用户

发布于 2013-03-27 17:31:17

SQL Server使用TOP限制SELECT语句返回的记录数。

代码语言:javascript
复制
SELECT TOP 5 Column1, (Column1 + Column2 + Column3) totalSum 
FROM   TableName
ORDER  BY totalSum  DESC

如果想要处理tie,可以在TOP子句中添加WITH TIES

代码语言:javascript
复制
SELECT TOP 5 WITH TIES Column1, 
       (Column1 + Column2 + Column3) totalSum 
FROM   TableName
ORDER  BY totalSum  DESC

  • TSQL TOP
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15655396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档