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

使用Max()函数选择组值

逑沛
2023-03-14
问题内容

我有一张这样的桌子:

     SKU    ITEM      VALUE
    1503796 1851920 0,9770637
    1503796 1636691 0,9747891
    1503796 1503781 0,9741025
    1503796 3205763 0,9741025
    1503801 1999745 0,9776622
    1503801 1999723 0,9718825
    1503801 3651241 0,9348839
    1503801 1773569 0,9331309
    1503811 1439825 0,97053134
    1503811 1636684 0,96297866
    1503811 1636671 0,96003973
    1503811 1600553 0,9535771
    1503818 1636708 0,9440251
    1503818 1636709 0,9440251
    1503818 1779789 0,9423958
    1503818 3322310 0,9369579

我需要这样的输出(与最大值分组):

SKU      ITEM     VALUE
1503796 1851920 0,9770637
1503801 1999745 0,9776622
1503811 1439825 0,97053134
1503818 1636708 0,9440251

试图使用像这样的东西:

select SKU, ITEM, VALUE from import
where value=(select max(value) from import )

但是它只选择一个具有最大值的行。如何重写查询?


问题答案:

使用ROW_NUMBER对记录进行排名,以便sku的最大值变为#1。然后仅保留那些排名第一的记录。

select sku, item, value
from
(
  select 
    mytable.*
    row_number() over (partition by sku order by value desc) as rn
  from mytable
)
where rn = 1;

对于SKU 1503818,您将获得以下两个之一:

1503818 1636708 0,9440251
1503818 1636709 0,9440251

如果您想要一个特定的商品(例如商品编号更高的商品),则将此条件添加到Row_Number的ORDER BY子句中。

至于您尝试过的查询:您应该寻找sku-value对:

select SKU, ITEM, VALUE from import
where (sku,value) in (select sku, max(value) from import group by sku);

如果是平局,例如SKU 1503818,此查询将为您获得两条记录。



 类似资料:
  • 问题内容: 您好,这是我想要的,我连接到数据库并检索UniqueId列的最大元素,并将其分配给名为maxID的整数变量,这是我的方法: 解决这个问题的一种体面的方式,感觉是通过在while循环中使用“ rs2.next()”,这是一种非常粗糙的方式。 谢谢 问题答案:

  • 请帮我把这个select语句转换成MongoDB: 我阅读了这个文档:http://www.mongodb.org/display/docs/aggregate#aggregate-group 但仍然不知道如何应用Max()方法而不是SUM()作为该文档。 谢谢.

  • 问题内容: 我有一个查询来获取搜索结果,效果很好。 成功查询的示例: 从现在开始,我每个人都有一个以上的记录,这是我想要获得MAX值(最新ID)的地方。 我尝试了许多不同的查询,但始终收到错误消息 _ ,在非对象上调用成员函数rowCount()。_ 我了解该错误的含义,但我无法弄清楚该错误的出处和总体上的错误。 我未成功尝试的示例: 我在这里想念什么?有什么帮助吗? 问题答案: 这是你的条款:

  • MariaDB 函数用于检索表达式的最大值。 语法: 数据准备 在数据库中创建一个表,并插入一些数据。参考以下创建语句 - 1. MAX()函数与单表达式 示例: 查询表的最低分数。参考以下查询语句 - 执行上面查询语句,得到以下结果 - 2. MAX()函数与GROUP BY子句 可以使用函数的子句来分组。 再插入一条重复的数据 - 当前数据库中的记录如下 - 示例: 执行上面查询语句,得到以下

  • MAX() 函数 MAX() 函数返回指定列的最大值。 SQL MAX() 语法SELECT MAX(column_name) FROM table_name; 演示数据库 在本教程中,我们将使用 RUNOOB 样本数据库。 下面是选自 "Websites" 表的数据: +----+--------------+---------------------------+-------+------

  • Python3 数字 描述 max() 方法返回给定参数的最大值,参数可以为序列。 语法 以下是 max() 方法的语法: max( x, y, z, .... ) 参数 x -- 数值表达式。 y -- 数值表达式。 z -- 数值表达式。 返回值返回给定参数的最大值。 实例 以下展示了使用 max() 方法的实例: #!/usr/bin/python3 print ("max(80,