首先,建立測(cè)試表,插入測(cè)試數(shù)據(jù):
廣漢網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
create table test_a? (aa varchar2(6),bb varchar2(6));
當(dāng)我們想要取每條記錄中字段AA和BB的最大值(OR最小值)時(shí),通常想到的邏輯是if-then-else;又或者是case- when-else-end?
emmm,其實(shí)一個(gè)關(guān)鍵詞就可以搞定啦。取最大:greatest(字段1,字段2)取最?。簂east(字段1,字段2)。
select a.aa,a.bb,greatest(a.aa,a.bb) from test_a a ; --取字段aa和字段bb中的最大值
select a.aa,a.bb,least(a.aa,a.bb) from test_a a ; --取字段aa和字段bb中的最小值
END;
1、創(chuàng)建測(cè)試表,
create table test_max(id number, value number);
2、插入測(cè)試數(shù)據(jù)
insert into test_max values(1,12);
insert into test_max values(2,100);
insert into test_max values(3,55);
insert into test_max values(4,100);
insert into test_max values(5,50);
commit;
3、查詢表中全量數(shù)據(jù),select t.*, rowid from test_max t;
4、編寫(xiě)sql,使用rank分析函數(shù),取value值為最大的記錄; select t.* from (select t.*, rank() over(order by value desc) rk from test_max t) t where rk = 1;
可以寫(xiě)一個(gè)function,把字母都過(guò)濾掉,只剩下數(shù)字,然后就可以根據(jù)數(shù)字排序了
CREATE?OR?REPLACE?FUNCTION?GETNUMBER(STR?IN?VARCHAR2)?RETURN?VARCHAR2?IS
V_TEMP???VARCHAR2(200);
V_RETURN?VARCHAR2(200);
IDX??????NUMBER?:=?1;
BEGIN
WHILE?(IDX?=?LENGTH(STR))?LOOP
V_TEMP?:=?SUBSTR(STR,?IDX,?1);
IF?(ASCII(UPPER(V_TEMP))?=?48?AND?ASCII(UPPER(V_TEMP))?=?57)?THEN
V_RETURN?:=?V_RETURN?||?V_TEMP;
END?IF;
IDX?:=?IDX?+?1;
END?LOOP;
RETURN?V_RETURN;
END?GETNUMBER;
select *? from (select row_number() over(partition by id order by create_tiem desc) rn, id, create_time, ... , ... from table )t1 where rn = 1;
在這里...代表的是字段名稱,將需要的字段名稱放在這里,需要哪些放那些。
SELECT t.*FROM (select * from `table` order by `create_time` desc limit 10000000000) t GROUP BY t.id;
在這里就是先將數(shù)據(jù)進(jìn)行排序然后再分組,然后取出的是最大的一個(gè)值,這里有點(diǎn)要注意,limit?10000000000這個(gè)根據(jù)不同的版本看是否要加這個(gè),5.5之前的不用加,之后的要加,反正加上肯定沒(méi)有錯(cuò)。
group by后取的一條數(shù)據(jù)默認(rèn)是按主鍵id排序后的第一條