当前位置: 首页 > 知识库问答 >
问题:

如何获得postgresql中的前10个值?

宋宇
2023-03-14

我有一个简单的问题:

我有一个postgresql表:分数(分数整数)

我如何最快获得最高的10分?

更新:

我将多次进行此查询,并以最快的解决方案为目标。

共有3个答案

陶朝明
2023-03-14

请注意,如果前10个值中有关联,您将只获得前10行,而不是提供答案的前10个值。例如:如果前5个值是10, 11, 12, 13, 14, 15但您的数据包含10, 10, 11, 12, 13, 14, 15,您将只10, 10, 11, 12, 13, 14为前5个,并带有LIMIT

这里有一个解决方案,如果存在连接,它将返回10多行,但您将得到所有行,其中一些值列在技术上位于前10位。

select
  *
from
  (select
     *,
     rank() over (order by some_value_column desc) as my_rank
  from mytable) subquery
where my_rank <= 10
郎成弘
2023-03-14

似乎您正在查找带有限制子句的结束订单:

SELECT
 *
FROM
  scores
ORDER BY score DESC
LIMIT 10

当然SELECT*可能会严重影响性能,因此请谨慎使用。

空鸿云
2023-03-14

为此,您可以使用限制

select *
from scores
order by score desc
limit 10

如果性能很重要(何时不重要;-),请查找分数索引。

从8.4版开始,您还可以使用标准(SQL:2008)fetch-first

select *
from scores
order by score desc
fetch first 10 rows only

正如@Raphvanns所指出的,这将从字面上给出前10行。要删除重复值,必须选择distinct行,例如。

select distinct *
from scores
order by score desc
fetch first 10 rows only

SQL Fiddle

 类似资料:
  • 我正在使用Javascript(ES6)/FacebookReact,并尝试获得大小不同的数组的前3个元素。我想做与Linq take(n)等价的操作。 在我的Jsx文件中,我有以下内容: 然后我尝试了前3个项目 这不起作用,因为地图没有一个设置的函数。 你能帮忙吗?

  • 我想在我的应用程序中获得唯一的设备id。但据谷歌文件称,Android10增加了对不可重置标识符的限制。 我不想要随机的id。我想得到唯一的id,这样我就可以识别我的应用编程接口被击中的设备。通过它,我可以管理我的会话。除了Secure.android之外还有另一个唯一的id_id这对Android来说是唯一的吗?或者有什么方法可以访问Android10中的Secure.android_id。

  • 问题内容: 如何在Java中找出最后一个月及其年份 例如,如果今天是2012年10月10日,则结果应为Month = 9和year = 2012;如果今天是2013年1月10日,则结果应为Month = 12和year = 2012 问题答案: 您的解决方案在这里,但您需要使用减法来代替加法 然后,您可以在上调用getter以获取适当的字段

  • 问题内容: 我应该如何获取应该在31天之前? 问题答案: 只需减去31天。例如: 要 获取 当前日期,可以使用: 要么 或者,您可能想要创建自己的“时钟”表示形式,该表示形式能够为您提供current ,在这种情况下,您将使用: (这使您可以使用依赖项注入使用伪造的时钟编写更简单的单元测试。)

  • 问题内容: 您好在我的Java类Toto中,我有3个静态方法,我想知道当我处于这些方法之一时,如何在try catch bloc中获取和显示package.class.methode的名称?我在methodeA中尝试过: 但它不起作用,我怎么也可以尝试显示它?谢谢 问题答案: -将打印整个异常stracktrace-即所有方法+行号。

  • 我有一个使用分布式TensorFlow的计划,我看到TensorFlow可以使用GPU进行训练和测试。在集群环境中,每台机器可以有0个或1个或多个GPU,我想在尽可能多的机器上将我的TensorFlow图运行到GPU中。 我发现在运行TensorFlow在日志消息中提供有关GPU的信息,如下所示: 我的问题是如何从TensorFlow获取当前可用GPU的信息?我可以从日志中获取加载的GPU信息,但