当前位置: 首页 > 面试题库 >

PostgreSQL:同一表中每个项目的前n个条目

佟涵畅
2023-03-14
问题内容

| uId | title | amount | makers | widgets |
1 richard 998 xcorp sprocket
2 swiss 995 ycorp framitz
3 ricky 90 zcorp flobber
4 ricky2 798 xcorp framitz
1 lilrick 390 xcorp sprocket
1 brie 200 mcorp gullywok
1 richard 190 rcorp flumitz
1 brie 490 bcorp sprocket

等等…

我正在尝试仅检索3条记录makers,前3条amountswidgets它们产生的

这是我所拥有的:

SELECT amount, makers FROM (SELECT amount, makers, (SELECT count(*) FROM  entry  as t2
WHERE t2.amount = t1.amount and t2.makers >= t1.makers) AS RowNum
FROM entry as t1
) t3
WHERE t3.RowNum<4 order by amount;

这是我真正需要的吗?有更好的方法来解决这个问题吗?我见过的大多数方法都是在不同的表上进行联接等,我需要的所有信息都在一个表上。

预期产量:

| uId |   title   |  amounts  |  makers  |  widgets  |
  1      richard      998        xcorp     sprocket
  41     swiss        995        xcorp     widget
  989    richard      989        xcorp     sprocket
  22     swiss        995        ycorp     framitz
  92     swiss        990        ycorp     widget
  456    swiss        895        ycorp     flobber
  344    ricky        490        zcorp     flobber
  32     tricky       480        zcorp     flobber
  13     ricky        470        zcorp     flobber

等等…

的顺序makers无关紧要,只要获得amounts每个的前3名makerswidgets就可以了。makers设置的数量,总会有x``makers


问题答案:

SELECT * FROM (
SELECT uid,
title,
amount,
maker,
widgets,
rank() over (partition by maker order by amount desc) as rank
FROM entry
) t
WHERE rank <= 3



 类似资料:
  • 问题内容: 我们是postgres的新手,我们有以下查询,通过该查询我们可以从每个类别中选择前N个记录。 以上查询的输出是这样的 但是我们的要求有所不同,我们想从每个类别中选择前n%个记录,其中n不固定,n基于每个组中某些元素的百分比。 问题答案: 要基于每个组中行数的百分比来检索行,可以使用两个窗口函数:一个对行进行计数,另一个对行赋予唯一编号。 SQLFiddle示例:http ://sqlf

  • 给定一个我想在这样的页面上排列的集合: 在ui中是否有某种技巧可以用来实现这一点:重复或使用其他技术,最好不要创建自定义组件?

  • 问题内容: 我有一张表格,其中每一行都是以下形式: 凡我查询寻找的价值配对,使用。就查询时间而言,改为使用一个表(其中每行是一个排列)是否更有效: 这样,我这次使用=运算符查询了值b。 值得注意的是,我感兴趣的用例当前有大约10,000行,其中每个“列表”元素平均有8个条目。我同时标记了两者,因为使用和的数据库都存在类似的问题。 问题答案: 我的查询在其中使用LIKE寻找一对值,%b%。就查询时间

  • 问题内容: 我试图从看起来像这样的数据库表结果中选择前2条记录 我试过这个查询 但是有些主题,例如失踪的地方,我什至尝试了以下链接的建议 如何选择每个组的前N行? 但是我为每个受检者得到两个以上 我究竟做错了什么? 问题答案: 您可以使用相关的子查询: 该查询通过串联三列来构造单列主键。如果您有真正的主键(如),则可以用代替。 SQL Fiddle中的示例。

  • 问题内容: 给定一个我想安排在这样的页面上的集合: 我可以使用某种技巧在ui:repeat或其他技术( 最好 是创建自定义组件之外)中进行此操作吗? 问题答案: 您可以根据属性检查当前循环,并在必要时打印中介。 例如,每3个项目: 请注意,不可能将其包装为纯HTML到中,因为它会导致格式不正确的XML,因此将其作为XML实体。 *根据评论进行 *更新 ,这是仅定义一次的另一种方法,可能不太混乱:

  • 问题内容: 我有一个列表,我想做的是嵌套循环 所需结果 我得到的结果 我希望将 foo 和 col中 的列表项一一注入到上面的shell脚本中。有没有一种方法可以将两个列表项一次传递到上面的shell脚本中? 我们可以做点什么 或使用for循环 引用我的Jenkinsfile }} 问题答案: 我相信转置是您要使用的方法,将两个列表配对,然后可以遍历结果: 更新 : 这就是我的目标。请注意,为简洁