在Oracle中id去重取最大值

一、創建Oracle表

       在Oracle中創建getmaxnum表

create table getmaxnum(
    id nvarchar2(20),
    num nvarchar2(30),
    name nvarchar2(50)
);

二、添加數據

     在表中插入數據

insert into getmaxnum values('1','2','zhangsan');
insert into getmaxnum values('1','3','lisi');
insert into getmaxnum values('2','1','wangwu');
insert into getmaxnum values('2','4','zhaoliu');
insert into getmaxnum values('3','5','tianqi');
insert into getmaxnum values('3','6','wuming');
insert into getmaxnum values('3','6','wuming');
insert into getmaxnum values('3','1','wuming');

                                                                 

三、業務需求

            獲取每個id中num最大的數據,比如:在id爲1的數據中,要求最終查詢的數據是 num 爲3 的數據

四、執行sql

select distinct(bb.num),bb.id,bb.name from (select max(num) num ,id  from getmaxnum group by id) aa left join getmaxnum bb on aa.num = bb.num 

1. 通過group by 去重,因爲在使用group by 去重時,可以使用max等函數,獲取id的同時,獲取每個id對應的最大num

2. 然後通過左連接 ,查詢num相同的數據

3.因爲查出的數據中有num最大值重複,使用distinct去重

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章