1. 程式人生 > >ORACLE,篩選單欄位不重複的記錄,保留其他欄位.

ORACLE,篩選單欄位不重複的記錄,保留其他欄位.

  在ORACLE中,我們常常對資料進行排序和篩選,例如:成績表中,將某一個人的所有科目成績放到一起來看,那麼我們會使用ORDER BY 語句。

例如表T1:

Name   Subject     Score

LI            Math          84

Zhang    Art              75

Li            Physics     93

Zhang    Math           97

Zhang   Physics     71

Li             Art              85

我們使用語句 SELECT *FROM T1 ORDER BY NAME 可以使得查詢結果按姓名排列。 

使用語句SELECT * FROM T1 ORDER BY SUBJECT 可以使查詢結果按科目排列。(結果省略請自行操作)

對於求一個人的總分,也很好辦,我們可以使用GROUP BY 語句,將求和的結果直接按每個名字一條記錄輸出,例如:

SELECT SUM(SCORE) FROM T1 GROUP BY NAME 這樣可以得到各名字對應的總分。

事實上,類似於SUM,MAX,MIN這樣的函式被稱為聚集函式,就是和GROUP搭配起來用的。

然而很多時候我們需要的是聚集運算前的原始資訊,例如:

ID            TYPE

000132 A

000212 C

000213 B

000632 A

001283 B

這樣的資訊,我們希望按組分開,而又希望保留完整的條目(每個TYPE任意一條即可),筆者在網上看到的一個機智的做法是使用MIN函式

SELECT MIN(ID),TYPE FROM T1 GROUP BY TYPE

這樣,就取出了每個TYPE中的ID最小的一條記錄,保留住了完整的記錄資訊,達到了期待的結果。

這個例子只考慮到了一條記錄只包含兩個欄位的情況,多個欄位是否依然適用,今天來不及實驗了,請各位批評指正!如能回覆,感激不盡!

相關推薦

#oracle--刪除以id為主鍵地重複記錄且只留下重複記錄中第一條記錄的sql語句

這道題是我面試一家金融軟體公司的筆試題,該題如下所示: 如下表,是一張使用者表,且uerid為主鍵,圖如下所示。 要求能夠通過一個sql語句刪除所有重複的記錄,並只留下重複記錄中第一條記錄的sql語句。 答案: delete from userinf

ORACLE篩選重複記錄保留其他.

  在ORACLE中,我們常常對資料進行排序和篩選,例如:成績表中,將某一個人的所有科目成績放到一起來看,那麼我們會使用ORDER BY 語句。 例如表T1: Name   Subject     Score LI            Math          84 Z

oracle過濾某個重複記錄只獲取一條記錄

oracle過濾某個欄位重複記錄,只獲取一條記錄 一,首先想到: 1,關鍵字distinct 2,group by 3,MAX,MIN這樣的函式被稱為聚集函式,和GROUP搭配起來用 但均無法實現,執行結果如下 舉例: 表名:OffsiteOutreachTeam_Lis

python 1~9 任意組合兩重複小於90

for n in range(1,10): num = n*10 for i in range(1,10): a = num+i b = a/i if b==11: pass elif a >

sql 刪除表中多餘的重複記錄(多個保留一條記錄

在網上呢~自己收集了一些關於這方面的知識~  自己整理一下 1.查詢重複記錄 select * from 表名 where 重複欄位 in (select 重複欄位 from 表名 group

刪除表中多餘的重複記錄重複記錄是根據單個(peopleId)來判斷只留有rowid最大的記錄

delete from bizdata_cwbj.cm_fin_fb1 j where j.syear = 2009 and (SCOMPANYCODE, SYEAR, SMONTH, SRPTYPE, S

從資料表中列出某重複的所有列的資料

select * from table where id in (select min(id) from table where 1 = 1 and isused=0 and datediff(hh,addtime,'"&now()&"')<168 group by openi

MySQL根據某一個或者多個查詢重複資料並且保留值最大的記錄

問題場景 當系統沒有處理好併發操作的情況下,操作人員同時操作一張表的情況下,資料庫有可能被插入相同記錄,這些會帶來隱藏的bug。 解決思路一 解決併發操作的衝突。 解決思路二 對資料庫(MySQL)某張表去重,首先確定你的業務是否允許重複,不允許你

IT人的前沿技術書:學到老就活到老

伸縮 以及 了解 必須 設置 plot hold 設計模式 海量數據 IT人作為這個互聯網時代的弄潮兒,我們天生就處於技術浪潮的中心地帶,技術的變革讓我們不得不掌握終生學習的能力和多元化的知識領域,技術的浪潮時而沖天而起,時而又歸於平靜,但是始終在推動著人類社會向前發展。你

WIn10遠程:mstsc:出現身份驗證錯誤要求的函數支持 這可能是由於CredSSP加密Oracle修正

mic rac mst windows 定位 red reg soft nor a.單擊 開始 > 運行,輸入 regedit,單擊 確定。 b.定位到 HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\S

tp5生成6重複驗證碼

/** * 獲取啟用碼 */ public function getnum() { $num = microtime(true); for ($i = $num; $i < ($num + 10); $i++) { //

寫一個函式隨機生成N條重複的手機號

方法一:import random def phone(count): results = [] while len(results)!=count: starts = [138,156,130,170,188,189] start = random.ch

生成N重複的隨機數

package com.jack.question.random; import java.util.Arrays; import java.util.Random; /** * @author lvh */ public class RandomArray { /* * 如題,定義一

完美實現tabsheet中融合窗體重複建立並自動切換到已經建立的sheet

procedure TForm1.btn1Click(Sender: TObject);  //功能說明  點選時,建立視窗並顯示到sheet中,再並點選時如果已經有則不再建立;     //如果已經有開啟的則要切換成當前活動的。專案設定中取消指定窗體

【原創原始碼】批量儲存圖片到一定數量後新建資料夾繼續儲存(檔名重複記錄圖片的ID、url地址以及名稱

最近寫的一小段程式碼,具體實現的功能如下: 1.反覆讀取本地一張圖片,使用opencv更改其大小為112*112 2.使用GUID給圖片命名(保證圖片名稱不會重複) 3.建立資料夾,每個資料夾存放400個圖片,滿400後建立新的資料夾(以時間命名)繼續存放...以此類推 4.記錄每張

邀請碼實現(六重複

實現思路:資料庫 + UUID 小貼士: UUID是1.5中新增的一個類,在java.util下,用它可以產生一個號稱全球唯一的ID UUID由以下幾部分的組合: (1)當前日期和時間,UUID的第一個部分與時間有關,如果你在生成一個UUID之後,過幾秒又生成一個UUID,則第一

java生成4重複字元(包含大寫字母、小寫字母、數字)

需要生成4位不重複的字元作為唯一引數,要求只能使用大寫字母、小寫字母和數字的組合。大寫字母26個、小寫字母26個、10個數字共62個字元。不重複排列個數:62*62*62*62=14776336個。 /** * * @author wzp * 2016-3-18

oracle查詢重複記錄去除重複記錄

轉載自http://blog.163.com/aner_rui/blog/static/12131232820105901451809/ SELECT * FROM t_info a WHERE ((SELECT COUNT(*)           FROM t_i

m個元素的陣列隨機選擇n個重複元素(js實現)

問題描述: 在由m個元素的source陣列中,隨機選擇n個不重複的元素放入新陣列target 注:source陣列元素本身不重複,m>n 解決方案 方案一: 根據陣列source,在0到source.length-1範圍內隨機一個數作為下標,

查詢表中多餘的重複記錄(多個

select a.* from entest a,(select article_id,users_id from entest group by article_id,users_id having