Oracle SQL 中的 max() 问题

max() issue in Oracle SQL

我正在使用 Oracle SQL,我需要一些有关 max() 函数的帮助。

我有以下 table:

ID  | Type | Price | Quantity
 1  |  A   |  10   |    2
 2  |  B   |  5    |    5
 3  |  C   |  10   |    3
 4  |  A   |  8    |    7
 5  |  A   |  6    |    9
 6  |  A   |  7    |    5
 7  |  B   |  15   |    3
 8  |  A   |  20   |    4
 9  |  A   |  3    |    7
 10 |  B   |  11   |    8

我需要按类型列汇总 table。对于每组类型 (A, B, C),我需要 select max(id) 的价格和数量。

我这种情况:

 ID  | Type | Price | Quantity
  9  |  A   |  3    |    7
  10 |  B   |  11   |    8
  3  |  C   |  10   |    3

有什么建议吗?

max 不会帮你解决这个问题。您可以使用 row_number 分区功能。

select id, type, price, quantity
from
(
select yourtable.*,
    row_number() over (partition by type order by id desc) rn
from yourtable
) v
where rn = 1

像这样:

Select t.* From 
(Select Max(ID) As ID From Table
 Group By Type) tmp
Join Table t On t.ID = tmp.ID