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

如何在SQL中分组并选择最小值

诸葛乐逸
2023-03-14
问题内容

我有包含以下字段的表:

 id  |   date_from  | date_to      |   price
 --------------------------------------------
 CK1     22-12-2012   29-12-2012       800
 CK1     22-12-2012   29-12-2012       1200
 CK2     22-12-2012   29-12-2012       1400
 CK2     22-12-2012   29-12-2012       1800
 CK2     22-12-2012   29-12-2012       2200

如何创建SQL,请选择按ID,DATE_FROM,DATE_TO对结果进行分组并从价格中选择最低的值。

所以结果是

 CK1     22-12-2012   29-12-2012       800
 CK2     22-12-2012   29-12-2012       1400

问题答案:
select id, date_from, date_to, min(price)
from table
group by id, date_from, date_to


 类似资料:
  • 我有这样的数据: 自然有许多地点和许多产品每个地点。我希望以这样的数据流结束: 我想出了最常见的方法,用这个。 在将其扩展到N个最常见的时,我可以创建另一个删除这些行的dataframe,再次运行该过程以获得第二个最常见的,并按位置将它们连接在一起。通过适当的列命名,可以将其放入循环中运行N次,每次迭代添加一个列。 然而,这将是非常缓慢的,因为它将划分和加入每个迭代。例如,我如何以更好的方式获得每

  • 问题内容: 可以说我有一个包含许多这样的行的表: 我正在做一个简单的查询,像这样: 运行此查询后,我得到如下结果: 非常简单 :) 我现在需要做的是选择计数大于10的具有最小和最大利润的行(这是一个参数) 我能够通过此获得最小值: 我正在考虑使用ORDER BY DESC进行上述查询,但这不是最佳解决方案。 我需要做的是: 选择2行:按范围分组时,第一行最少,第二行最大AVG利润。 编辑: 如果我

  • 问题内容: 在TableA中,我有一个int列。 是否可以仅使用一条select语句来选择不存在且大于0的列中的最小值? 例如,如果col具有值1,2,9,则select语句将返回3。如果col具有9,10,11,它将返回1。 我可以使用临时表或循环来实现,但是我想知道是否可以仅使用select语句来实现? 问题答案: 拥有一个从1到最大值(或更高)的数字表

  • 问题内容: 这就是我想要做的。假设我有这张桌子t: 对于每个ID,我想选择包含最小record_date的行。所以我会得到: 我看到的唯一解决方案是假定所有record_date条目都是不同的,但在我的数据中并非如此。使用带有两个条件的子查询和内部联接将为我提供某些ID的重复行,这是我不想要的: 问题答案: 怎么样: 这将获取每个ID的最短日期,然后基于这些值获取值。唯一的重复项是同一ID的最小r

  • 问题内容: 从下面的数据中,我需要使用SQL Server 2005为每个链接ID选择最接近指定日期的记录: 因此,使用01/10/2010选择它们应返回: 我知道这是有可能的,但似乎无法绕开我的头脑(必须太接近一天的结束了:P)如果有人可以帮助或朝正确的方向轻轻推一下,将不胜感激! 编辑: 另外我也遇到了这个sql以获取最接近的日期: 但无法弄清楚如何正确地整合到查询中… 谢谢 问题答案: 你可

  • 问题内容: 我有一个看起来像这样的报告: 这是通过SQL完成的(特别是T-SQL版本的Server 2005): 我希望该报告仅显示每个工作流程的最早日期: 有任何想法吗?我不知道这一点。我尝试使用嵌套的选择返回最早的托盘日期,然后在WHERE子句中进行设置。如果只有一家公司,这将非常有用: 但是,如果该表中有不止一家公司,那么这显然将行不通。任何帮助表示赞赏! 问题答案: 只需使用