給你舉個例子:
在長陽等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供成都網站制作、成都網站設計、外貿營銷網站建設 網站設計制作定制制作,公司網站建設,企業網站建設,品牌網站制作,成都營銷網站建設,外貿網站建設,長陽網站建設費用合理。
比如a表有這樣幾條數據
id name
1 5
2 4
3 5
4 3
那么你要查詢名字不同的 語句應該是
select distinc(a.name) from a
那么查詢到的結果應該是 name 5 4 3
但是實際情況并不僅僅是這么簡單
比如我想查詢name 不重復的所有數據
你就應該用到 group by 分組
select distinct(a.name),a.id from a group by a.name
distinct 必須放在開頭 而且在查詢多個字段的時候需要跟上 group by 這樣才能得到你想要的結果
剔重有兩種方法,一是distinct單個字段剔重,多個字段時一般需要加case when單獨判斷一次
二個就是最常用的分組剔重group by
多條件判斷也有兩種,一種是where and and。。用于全表多條件判斷,
二種就是case when了,用于單個字段的多條件判斷
具體場景應用你可以追問我回答你具體代碼
你的意思是要當天最大的num ?
select id, time, max(num) from ta
where time = trunc(sysdate)
group by id, time
(1)查找有沒有重復數據可以用去重統計(distanct+count)和本身的統計數據(count)對比,二者數據不同,那么就說明有重復數據。
(2)重復數據有哪些,可以用全體分組(group by+count)只要不等于1的就是就是重復數據
(3)在所有數據中顯示重復數據。要用到開窗函數rank()over(group by 全體字段),這樣可以給每條數據的前面都加上編號,也就是說只要前面的編號不是1,那么這條數據就是重復的。
1。用rowid方法
據據oracle帶的rowid屬性,進行判斷,是否存在重復,語句如下:
查數據:
select * from table1 a where rowid
!=(select max(rowid)
from table1 b where a.name1=b.name1 and
a.name2=b.name2......)
刪數據:
delete from table1 a where rowid
!=(select max(rowid)
from table1 b where a.name1=b.name1 and
a.name2=b.name2......)
2.group by方法
查數據:
select count(num), max(name) from student --列出重復的記錄數,并列出他的name屬性
group by num
having count(num) 1 --按num分組后找出表中num列重復,即出現次數大于一次
刪數據:
delete from student
group by num
having count(num) 1
這樣的話就把所有重復的都刪除了。
3.用distinct方法 -對于小的表比較有用
create table table_new as select distinct *
from table1 minux
truncate table table1;
insert into table1 select * from table_new;
文章題目:oracle怎么分組去重,Oracle分組去重
分享路徑:http://vcdvsql.cn/article8/dsdjoop.html
成都網站建設公司_創新互聯,為您提供網站改版、網站設計、網站策劃、App設計、微信公眾號、全網營銷推廣
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯