2015-02-08 64 views
0

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

我有如下表:

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 

我需要通过类型列汇总表。对于每组类型(A,B,C),我需要选择价格和最大数量(id)。

我这种情况:

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

什么建议吗?

回答

1

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 
+0

子查询有一个问题:FROM关键字未找到预期 – Omri 2015-02-08 10:24:46

+0

@Omri:你需要 “资格” 的'*'在甲骨文:'选择yourtable。 *,row_number()...' – 2015-02-08 10:48:54

+0

哦。谢谢。我现在检查一下。 – Omri 2015-02-08 10:52:12

0

事情是这样的:

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