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
我正在使用 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