Sql 使用Max()函数选择组值

Sql 使用Max()函数选择组值,sql,oracle,function,max,greatest-n-per-group,Sql,Oracle,Function,Max,Greatest N Per Group,我有一张这样的桌子: 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

我有一张这样的桌子:

     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
select SKU, ITEM, VALUE from import
where value=(select max(value) from import )
我需要获得如下输出(按最大值分组):

尝试像这样使用smth:

     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
select SKU, ITEM, VALUE from import
where value=(select max(value) from import )

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

使用公共表表达式

WITH CTE AS 
(SELECT SKU,ITEM,VALUE,
ROW_NUMBER() OVER (PARTITION BY SKU ORDER BY value DESC)as maxvalue 
FROM import)
SELECT SKU,ITEM,VALUE FROM CTE WHERE maxvalue=1

使用公共表表达式

WITH CTE AS 
(SELECT SKU,ITEM,VALUE,
ROW_NUMBER() OVER (PARTITION BY SKU ORDER BY value DESC)as maxvalue 
FROM import)
SELECT SKU,ITEM,VALUE FROM CTE WHERE maxvalue=1

使用公共表表达式

WITH CTE AS 
(SELECT SKU,ITEM,VALUE,
ROW_NUMBER() OVER (PARTITION BY SKU ORDER BY value DESC)as maxvalue 
FROM import)
SELECT SKU,ITEM,VALUE FROM CTE WHERE maxvalue=1

使用公共表表达式

WITH CTE AS 
(SELECT SKU,ITEM,VALUE,
ROW_NUMBER() OVER (PARTITION BY SKU ORDER BY value DESC)as maxvalue 
FROM import)
SELECT SKU,ITEM,VALUE FROM CTE WHERE maxvalue=1

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

对于SKU 1503818,您将获得以下两种:

1503818 1636708 0,9440251 1503818 1636709 0,9440251
然而,在平局的情况下,与SKU 1503818一样,此查询将获得两条记录

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

对于SKU 1503818,您将获得以下两种:

1503818 1636708 0,9440251 1503818 1636709 0,9440251
然而,在平局的情况下,与SKU 1503818一样,此查询将获得两条记录

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

对于SKU 1503818,您将获得以下两种:

1503818 1636708 0,9440251 1503818 1636709 0,9440251
然而,在平局的情况下,与SKU 1503818一样,此查询将获得两条记录

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

对于SKU 1503818,您将获得以下两种:

1503818 1636708 0,9440251 1503818 1636709 0,9440251 然而,在平局的情况下,与SKU 1503818一样,此查询将获得两条记录

您可以与聚合函数一起使用,以获得不同行的最大值:

SELECT SKU,
       MAX( ITEM ) KEEP ( DENSE_RANK LAST ORDER BY VALUE ASC ) AS ITEM,
       MAX( VALUE ) AS VALUE
FROM   IMPORT
GROUP BY SKU;
您可以与聚合函数一起使用,以获取不同行的最大值:

SELECT SKU,
       MAX( ITEM ) KEEP ( DENSE_RANK LAST ORDER BY VALUE ASC ) AS ITEM,
       MAX( VALUE ) AS VALUE
FROM   IMPORT
GROUP BY SKU;
您可以与聚合函数一起使用,以获取不同行的最大值:

SELECT SKU,
       MAX( ITEM ) KEEP ( DENSE_RANK LAST ORDER BY VALUE ASC ) AS ITEM,
       MAX( VALUE ) AS VALUE
FROM   IMPORT
GROUP BY SKU;
您可以与聚合函数一起使用,以获取不同行的最大值:

SELECT SKU,
       MAX( ITEM ) KEEP ( DENSE_RANK LAST ORDER BY VALUE ASC ) AS ITEM,
       MAX( VALUE ) AS VALUE
FROM   IMPORT
GROUP BY SKU;
可能的重复可能的重复可能的重复可能的重复可能的重复可能的重复可能的重复