--oracle常用函數
select abs(-1) from dual; --絕對值
select mod(10,3) from dual; --取餘數
select sign(-66) from dual; -- 正數返回1; 負數返回-1; 0返回0
select ceil(1.32) from dual; --向上取整 2
select floor(1.99) from dual; --向下取整
select trunc(1.2399,3.9) from dual; -- 先對3.9向下取整爲3,再截取小數點後3位
select round(1.2395,3.9) from dual; --先對3.9向下取整爲3,再取小數點後3位四捨五入
select chr(11) from dual; --將ASCII碼轉化爲字符
select ascii('訂') from dual; --將字符轉化爲ASCII碼
select length('aaaaa') from dual; --判斷字符串的長度 5
select substr('abcdefghijk',2,5) from dual; --截取字符串從第2位開始,截取5位 bcdef
select instr('abcdabcd','a',2,1) from dual; --判斷字符a在字符串中第2位開始第1次出現的位置5
select instr('abcdabcd','w') from dual; --用來判斷字符串中是否存在字符a 存在返回值大於0
select upper('acd') from dual; --大寫轉換
select lower('ADcD') from dual; --小寫轉換
select initcap('you are dog') from dual;--字符首字符大寫
--聚合函數
select avg(dt.djl_age) from djl_test dt;
select max(dt.djl_age) from djl_test dt;
select min(dt.djl_age) from djl_test dt;
select count(dt.djl_age) from djl_test dt;
select sum(dt.djl_age) from djl_test dt;
select * from djl_test for update;
--group by having
--先篩選出年齡大於10的數據,然後再按名次和id分組,分組後展示id需大於4的數據
select max(dt.djl_age), dt.djl_name
from djl_test dt
where dt.djl_age > 10
group by dt.djl_name,dt.djl_id
having dt.djl_id >4;
--聚合函數嵌套 分組查詢出最大的年齡後再刪選最大的年齡
select max(max(dt.djl_age))
from djl_test dt
where dt.djl_age > 10
group by dt.djl_name,dt.djl_id
having dt.djl_id >4;
--通過rownum 進行分頁
select dt.*
from (select t.*, rownum rn from djl_test t) dt
where dt.rn between 1 and 3;
--通過rowid 對重複的djl_id 進行除重
delete from djl_test
where rowid not in (select max(rowid) from djl_test group by djl_id)
--ROW_NUMBER() OVER (ORDER BY COLUMN1) 的使用
--先將數據進行排序,然後再取ROWNUM
select dt.*
from (select t.*, ROW_NUMBER() OVER(ORDER BY djl_age desc) rn from djl_test t) dt
where dt.rn between 1 and 3;
--ROW_NUMBER() OVER (PARTITION BY COLUMN1 OREDER BY COLUMN2)
--先將數據進行分組,再進行排序,然後再取ROWNUM,每組數據都是ROWNUM 從1開始
select t.*,
row_number() over(partition by djl_name order by djl_age desc) rn
from djl_test t
--隨機函數0 - 1.0之間的隨機數
SELECT DBMS_RANDOM.value FROM DUAL;
--TRUNC(DBMS_RANDOM.VALUE(A,B)) 隨機產生A-B之間的值
SELECT TRUNC(DBMS_RANDOM.VALUE(1,100)) FROM DUAL;
--查詢表中奇數列
select td.*
from (select t.*, row_number() over(order by djl_age) rn from djl_test t) td
where mod(td.rn, 2) = 1
--聚合函數 over() 的使用 查詢出最大的年齡和最小的年齡
select djl_name,djl_age,max(djl_age) over(), min(djl_age) over() from djl_test;
--連續求和 over
select sum(djl_age) over(order by djl_id) from djl_test;
oracle常用函數總結
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Oracle定期備份shell腳本
雅冰石
2020-06-19 01:31:31
(Oracle)ORA-01034 - Oracle not available”和“ORA-27101 - shared memory realm does not exist”
南淮北安
2020-06-06 22:49:44
PLSQL 的中文亂碼解決方法(簡單實用)
南淮北安
2020-06-06 22:49:44
基本的oracle查詢操作語句
hikaworu
2020-06-03 20:41:25
Oracle 視圖和索引
南淮北安
2020-06-01 03:06:19
Oracle 序列及表的數據管理和操作
南淮北安
2020-06-01 03:06:19
Java 調用 Oracle 的存儲過程
南淮北安
2020-06-01 03:06:19
Oracle QL/SQL 的基本語法
南淮北安
2020-06-01 03:06:19
Oracle 中 Scott 用戶下的表結構
南淮北安
2020-06-01 03:06:19
Oracle 多行函數(聚合函數)和分組統計
南淮北安
2020-06-01 03:06:09
Oracle 存儲過程和存儲函數
南淮北安
2020-06-01 03:06:09
Oracle 子查詢和分頁查詢
南淮北安
2020-06-01 03:06:09
Oracle 及 PLSQL 安裝配置
南淮北安
2020-05-27 17:18:44
使用SQL Tuning Advisor(STA)爲sql提供優化建議
雅冰石
2020-05-24 12:42:32
用logmnr追蹤oracle操作記錄
雅冰石
2020-04-23 13:46:42