赞
踩
一)生成0到1之间的小数,包括0不包括1
SELECT DBMS_RANDOM.VALUE FROM DUAL;
二)生成随机正态分布数
SELECT DBMS_RANDOM.VALUE(0,100) FROM DUAL; //生成0-100范围内的小数,包括0不包括100
三)生成指定范围内的整数
SELECT TRUNC(DBMS_RANDOM.VALUE(0,100)) FROM DUAL; //生成0-100范围内的整数,包括0不包括100
四) 生成正态分布的随机数
SELECT DBMS_RANDOM.NORMAL FROM DUAL;
五)生成随机字符串
SELECT DBMS_RANDOM.STRING('参数1' , '参数2') FROM DUAL;
必须要指定两个参数,参数1用于指定生成随机字符串的类型,参数2用于指定生成随机字符串的长度。 其中参数1 的取值有:‘U’ 指生成大写的字符 ‘L’ 指生成小写的字符 ‘X’ 数字和大写的字母 ‘A’ 大小写混合的字符 ‘P’ 可打印的字符
例如: SELECT DBMS_RANDOM.STRING('X', 3) FROM DUAL; //生成长度为3的 类型是大写字母和数字的字符串
六)生成预期范围内的日期,比如我想要从2016年1月1日到2016年年底内任意的日期类型的数据,注意没有时分秒的具体数值。
第一步: 获得一个2016年1月1日的基数 SELECT TO_CHAR(TO_DATE('01/01/2016','MM/DD/YYYY','J')) //得到一个2457389基数
第二步: SELECT TO_DATE(TRUNC(DBMS_RANDOM.VALUE(2457389,2457389+364)), 'J' ) FROM DUAL; //得到2016-01-01 至 2016-12-30的随机日期
比如可以用case函数统计 分数在一些区间段的 人数的总数
select
case
when tb.score >= 80 then '优秀'及格
when tb.score <80 and tb.score >= 60 then '及格'
else '不及格'
end 区间,
concat(count(1),'人') 人数
from tablename tb
group by
case
when tb.score >= 80 then '优秀'
when tb.score <80 and tb.score >= 60 then '及格'
else '不及格'
end;
查询结果如下显示:
区间 | 人数 |
优秀 | 10人 |
及格 | 6人 |
不及格 | 5人 |
可以对一个表中的不同类型的数据做一个统计
select
country,
sum(case when tb.sex=1 then '1' else '0' end) 男性人口,
sum(case when tb.sex=2 then '2' else '0' end) 女性人口
from tablename tb
group by country
ID | NAME |
1 | AA |
2 | BB |
3 | CC |
查询出来的结果是 AA,BB,CC
SELECT REPLACE(WMSYS.WM_CONCAT(NAME),',','|') FROM A
查询出来的结果是AA|BB|CC
二、可以使用LISTAGG函数表名B
dept_no | name |
10 | 张三 |
10 | 李四 |
10 | 王五 |
20 | 赵六 |
20 | 马奇 |
查询出来的结果是 dept_no names
dept_no | names |
10 | 李四|王五|张三 |
20 | 马奇|赵六 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。