近来在写SQL,发现能写一些复杂的SQL可以很大的提高工作的效率。今天趁着有时间整理一下,方便以后用到的时候查询:
1、对特定的条件加和操作
select sum(列名) from 表名 where 列名='条件'
2、对加和的数据再次进行加和,并且使用数据的空表
select c1+c2+c3 from (
select
(select count(列名1) from 表名1 where 列名4='条件1') as c1,
(select count(列名2) from 表名2 where 列名5='条件2') as c2,
(select count(列名3) from 表名3 where 列名6='条件3') as c3
from dual
)
3、根据条件进行加和操作
select count(列名) from 表名 where
列名=条件1
and (列名 like '条件2' or 列名 like '条件3')
and (trunc(months_between(sysdate,to_date(csny,'yyyy-mm'))/12) <= 45)
4、将选择的结果进行拼装
select CONCAT(CONCAT(c1,'('),CONCAT(decode(c2,0,0,c1/c2),')'))
from
(select
(select count(列名) from 表名 where 列名=条件) as c1,
(select count(列名) from 表名) as c2
from dual
)
5、group by 和order by以及降序选择
select 列名 ,count(列名) as c1
from 表名 where 列名=条件
group by 列名
order by 列名
asc
6、rownum、cast在SQL中用法
select 列名,列名 from 表名 where 列名=条件
and rownum <=5
order by cast(列名 as integer)
desc
7、在SQL中使用正则表达式
select 列名 from 表名 where 列名='条件' and regexp_like(列名,'正则规则')