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

访问组中的前n个

宋飞舟
2023-03-14
问题内容

我有一个表格,我需要在其中获取每个类别的前n个最高金额的项目。

Category Item  InventoryCount
-------  ----- ------------- 
Beverage  milk    3  
Beverage  water   2 
Beverage  beer    9 
Utensil   fork    7 
Utensil   spoon   2 
Utensil   knife   1 
Utensil   spork   4 

我期望的输出是前2个类别中的最高清单。

Category Item  InventoryCount
-------  ----- ------------- 
Beverage  beer   9 
Beverage  milk   3 
Utensil   fork   7 
Utensil  spork   4 

问题答案:

这应该为您工作。如果它不满足您的要求,请发回您需要的内容。您最初希望有25个,所以您只需将最后一个子句修改为HAVING COUNT(*) <= 25

SELECT  a.item, 
        a.category, 
        a.inventorycount, 
        COUNT(*) AS ranknumber
FROM inv AS a 
INNER JOIN inv AS b 
     ON (a.category = b.category) 
     AND (a.inventorycount <= b.inventorycount)
GROUP BY  a.category, 
          a.item, 
          a.inventorycount
HAVING COUNT(*) <= 2
ORDER BY a.category, COUNT(*) DESC

如果要从表中选择更多列,只需将它们添加到SELECT和“ GROUP BY”子句中。

仅当您要扩展“ 每个Category,foo,bar的TOP n ”时,才将这些列也添加到该INNER JOIN子句中。

--show the top 2 items for each category and year.
SELECT  a.item, 
        a.category, 
        a.year,
        a.inventorycount, 
        COUNT(*) AS ranknumber
FROM inv AS a 
INNER JOIN inv AS b 
     ON (a.category = b.category) 
     AND (a.year = b.year) 
     AND (a.inventorycount <= b.inventorycount)
GROUP BY  a.category, a.item, a.year, a.inventorycount
HAVING COUNT(*) <= 2
ORDER BY a.year, a.category, COUNT(*) DESC


 类似资料:
  • 问题内容: 问题很多,但我似乎找不到与我遇到的情况相匹配的问题。我想在前n个查询中执行一些分组。我的数据看起来像这样(显然是假值)。 该表的日期范围涵盖数月,每月有数千行。我想做的是一个查询,告诉我哪个IP地址出现在每个月中最频繁。我可以使用以下方法完成一个月的操作: 但是我真正想要的是能够看到数据集中每个月的前n个。从本质上讲,这禁止了我使用我指定的where子句。当然,当我这样做的时候,我在所

  • 问题内容: 我希望对多维numpy数组的某些部分易于阅读。对于任何数组,访问第一维都是容易的()。另一方面,访问第六维是“困难的”(尤其是阅读)。 有一个更好的方法吗?特别是有没有一种方法,在编写程序时不知道轴? 编辑:索引维不一定是最后一个维 问题答案: 如果您想要一个视图并且想要快速查看,您可以手动创建索引: 它比使用s索引快得多,并且仅慢一点: 但是可能不那么可读,因此,如果经常需要,您可能

  • 问题内容: 我有一个具有名称,值,时间列的Oracle表。基本上,该表用于记录目的,用于存储对特定名称所做的更改,以前的值是什么以及更改时间。 我需要制定一个查询来获取特定名称的前n个更改,并且输出应具有表中的所有名称。任何帮助/建议吗? 编辑: 我需要选择11月1日,10月31日,8月31日和Ravi的Harish的详细信息。 问题答案: 这是你所追求的吗? 我的测试设置: 这是查询:

  • 问题内容: pyspark中有一个DataFrame,其数据如下: 我期望在每个组中返回2条记录,每条记录具有相同的user_id,它们需要具有最高的得分。因此,结果应如下所示: 我真的是pyspark的新手,有人可以给我一个代码段或门户网站有关此问题的相关文档吗?万分感谢! 问题答案: 我相信您需要使用窗口函数基于和来获得每一行的排名,然后过滤结果以仅保留前两个值。 通常,官方编程指南是开始学习

  • 我实际上有两个问题彼此相似。我的问题的简要概述如下: 我正在开发的图书馆应用程序与书籍和作者有一对多的关系,这意味着一本书可以有许多作者。一个样本作者和一本书作为图像附上。 Q1.如何搜索特定作者?对于一本只有1个作者的书,它总是有第0个索引。一本有多个作者的书怎么样?如果是这样,相同的作者也可以存在于其他索引中。我想从一个特定的作者那里得到所有的书,我想知道什么是最好的方法?

  • 问题内容: 做到这一点的最佳方法是什么? 问题答案: 使用 array_slice() 这是PHP手册中的一个示例:array_slice 只有一个小问题 如果数组索引对您有意义,请记住这将重置并重新排列 数字 数组索引。您需要设置标志来避免这种情况。(第4个参数,自5.0.2起可用)。 例: 输出: