Questions tagged «greatest-n-per-group»

查询每组最大/最小值的行。

16
在每个GROUP BY组中选择第一行?
顾名思义,我想选择以分组的每一行的第一行GROUP BY。 具体来说,如果我有一个purchases看起来像这样的表: SELECT * FROM purchases; 我的输出: id | 客户| 总 --- + ---------- + ------ 1 | 乔| 5 2 | 莎莉| 3 3 | 乔| 2 4 | 莎莉| 1个 我想查询每个人id最大的购买金额(total)customer。像这样: SELECT FIRST(id), customer, FIRST(total) FROM purchases GROUP BY customer ORDER BY total DESC; 预期产量: FIRST(id)| 客户| …

27
检索每个组中的最后一条记录-MySQL
有一个messages包含数据的表,如下所示: Id Name Other_Columns ------------------------- 1 A A_data_1 2 A A_data_2 3 A A_data_3 4 B B_data_1 5 B B_data_2 6 C C_data_1 如果我运行查询select * from messages group by name,我将得到的结果为: 1 A A_data_1 4 B B_data_1 6 C C_data_1 什么查询将返回以下结果? 3 A A_data_3 5 B B_data_2 6 C C_data_1 即,应返回每个组中的最后一条记录。 …


30
获取具有列最大值的行
表: UserId, Value, Date. 我想获取UserId,每个UserId的max(Date)值。即,具有最新日期的每个UserId的值。有没有办法在SQL中简单地做到这一点?(最好是Oracle) 更新:对于任何歧义,我们深表歉意:我需要获取所有UserIds。但是对于每个UserId,仅该用户具有最新日期的那一行。



9
SQL连接:选择一对多关系中的最后一条记录
假设我有一个客户表和一个采购表。每次购买都属于一个客户。我想在一个SELECT语句中获得所有客户的列表以及他们的最后一次购买。最佳做法是什么?关于建立索引有什么建议吗? 请在您的答案中使用这些表/列名称: 客户:身份证,姓名 购买:id,customer_id,item_id,日期 并且在更复杂的情况下,通过将最后一次购买放入客户表中来对数据库进行非规范化(在性能方面)是否有益? 如果保证(购买)ID按日期排序,可以使用类似的语句简化语句LIMIT 1吗?

24
MySQL中的ROW_NUMBER()
MySQL中有没有复制SQL Server函数的好方法ROW_NUMBER()? 例如: SELECT col1, col2, ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col3 DESC) AS intRow FROM Table1 然后,例如,我可以添加一个条件以将限制限制intRow为1,以获得col3每(col1, col2)对最高的一行。


18
获取每组分组的SQL结果的最大值的记录
如何获得包含每个分组集最大值的行? 我在这个问题上看到了一些过于复杂的变体,但都没有一个好的答案。我尝试将最简单的示例放在一起: 给定下面的表格,其中包含“人员”,“组”和“年龄”列,您将如何获得每个组中年龄最大的人?(组内的平局应给出第一个字母顺序的结果) Person | Group | Age --- Bob | 1 | 32 Jill | 1 | 34 Shawn| 1 | 42 Jake | 2 | 29 Paul | 2 | 36 Laura| 2 | 39 所需的结果集: Shawn | 1 | 42 Laura | 2 | 39

22
如何查询sql以获取每个用户的最新记录日期
我有一个表,它是有关用户何时登录的集合条目。 username, date, value -------------------------- brad, 1/2/2010, 1.1 fred, 1/3/2010, 1.0 bob, 8/4/2009, 1.5 brad, 2/2/2010, 1.2 fred, 12/2/2009, 1.3 etc.. 如何创建一个查询,为每个用户提供最新日期? 更新:我忘记了我需要具有与最新日期一致的值。

14
为每个类别选择前10条记录
我想在一个查询中返回每个部分的前10条记录。任何人都可以帮忙吗?节是表中的列之一。 数据库是SQL Server2005。我想按输入的日期返回前十名。部分是业务,本地和功能。对于一个特定的日期,我只需要前(10)个业务行(最近输入),前(10)个本地行和前(10)个功能。


10
获取每组分组结果的前n条记录
以下是最简单的示例,尽管任何解决方案都应能够扩展到需要许多n个顶级结果的地方: 给定下面的表格,其中包含“人员”,“组”和“年龄”列,您将如何获得每个组中年龄最大的2个人?(组内的关系不应产生更多结果,而应按字母顺序给出前2个) + -------- + ------- + ----- + | 人 集团| 年龄| + -------- + ------- + ----- + | 鲍勃| 1 | 32 | | 吉尔| 1 | 34 | | 肖恩| 1 | 42 | | 杰克 2 | 29 | | 保罗| 2 | 36 | …

11
选择每位用户最近日期的行
我有一张用户签入和签出时间的表(“ lms_attendance”),如下所示: id user time io (enum) 1 9 1370931202 out 2 9 1370931664 out 3 6 1370932128 out 4 12 1370932128 out 5 12 1370933037 in 我正在尝试创建此表的视图,该视图将仅输出每个用户ID的最新记录,同时为我提供“ in”或“ out”值,如下所示: id user time io 2 9 1370931664 out 3 6 1370932128 out 5 12 1370933037 in 到目前为止,我已经很接近了,但是我意识到视图将不接受子查询,这使它变得更加困难。我得到的最接近的查询是: select `lms_attendance`.`id` AS …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.