这是我的数据:
item_ID | group_ID | count_of_items_in_group
2|ABC|3
5|ABC|3
9|ABC|3
29|DEF|3
3|DEF|3
4|DEF|3
200|XYZ|2
300|XYZ|2
600|GHI|1
SQL字段: http
**://sqlfiddle.com/#!2/dfe09/1**
对于每个组,我想将返回的item_ID的数量限制为最多2个。我不在乎返回哪个2个。如果该组少于2行,则仅返回1行。
我无法为每个组写一个select top * 2并合并选择,因为我有几百个组。
我不确定从哪里开始,非常感谢您的帮助。
使用MS SQL 2005
(表布局与示例中的表布局完全相同,它是基于多个查询的视图)
使用ROW_NUMBER()
枚举数据集的字段数(由每个group_id划分)怎么样?
在那之后,什么时候才返回等于或小于2?或您想要的任何数字
SELECT * FROM
(
select item_id, group_id, count_of_items,
ROW_NUMBER() OVER(PARTITION BY group_id ORDER BY count_of_items DESC)
AS RN
from items_in_groups
) A
WHERE RN <= 2
这是Sql小提琴
问题内容: 我成功使用以下触发器来限制存储在SQLite数据库表 位置中 的行数。数据库表充当Android应用程序中的缓存。 同时,我添加了第二个触发器,使我可以行。-关于该主题的讨论可以在另一个主题中找到。第二个触发器需要一个在其上执行的触发器。 由于不再在 位置 上执行,而是在 locations_view 上执行,因此上述触发器不再起作用。如果我将触发器应用于以下错误消息。 问题: 如何更
问题内容: 所以我想我已经看到了解决方案,但是它们都是非常复杂的查询。我在oracle 11g中供参考。 我拥有的是简单的一对多连接,效果很好,但是我不需要很多。我只希望左边的表(一个)只连接满足连接条件的任何1行…不多的行。 我需要这样做,因为查询是在COUNTS的汇总中进行的,因此,如果我进行普通的左联接,我将获得5行,而我只应得到1。 因此示例数据如下: 我需要做的是在ASSIGNMENT
问题内容: 有没有一种方法可以使Oracle查询的行为类似于包含MySQLlimit子句的行为? 在MySQL中,我可以这样做: 以获得第21到30行(跳过前20行,给出下10行)。这些行是在后面选择的,因此它实际上按字母顺序从第20个名称开始。 在Oracle中,人们唯一提到的是rownum伪列,但是它在之前 被评估,这意味着: 将返回一个随机的十行,按名称排序,这通常不是我想要的。它还不允许指
问题内容: 在Oracle 10g中,我有以下SQL: 返回: 我想扩展此查询以确定此结果集中的dog.id的oracle rownum。 我试过了 但这并不能很好地解决(无论我匹配哪个dog.id,它都返回1)。我原本希望回来3。 谢谢你的帮助! 笔记 http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html 我很确
下面有一个表,我希望根据列值的优先级从该表返回记录。