例如有这样一张表
create table testa (
       c_a varchar2(10),
       c_b number
)插入如下数据a  1
b  1
c  2
a  2
d  3我想得到这样的查询结果
a 2
b 1
c 2
d 3就是想查询每一个c_a列元素对应c_b列最大的结果集,能否用一条sql查询到呢?求大神指点。

解决方案 »

  1.   

    select x,max(y) from t1 group by x;
      

  2.   


    select c_a,max(c_b) from t1 group by x;
      

  3.   

    LS2位列出来了 一个max函数搞定
      

  4.   

    select c_a,max(c_b) from t1 group by c_a;
      

  5.   

    楼上的回复我个人觉得不太严谨。要是最大结果集有两个并列呢?
    所以,我觉得还是用oracle的分析函数和开窗函数会比较好。
    如下:
    select c_a,c_b from                                                                       
       (                                                                            
        select c_a,c_b,rank()over(partition by c_a order by c_b desc) mm from testa
       )                                                                            
    where mm=1
      

  6.   

    max函数只能返回一个值,要是最大结果集有两个相等呢?
      

  7.   


    select distinct c_a,c_b from 
    (
    select c_a,max(c_b) as c_b from testa group by c_a
    )