八、Oracle SQL(聚合函数&标量函数)
12. 聚合函数
12.1 AVG() 求平均数
--查询某列的平均值
SELECT AVG(列) FROM 表
12.2 COUNT() 查询条数
-- 查询所有记录的条数
select count(*) from 表;
-- 查询对应列的值不为空的记录的条数
select count(列) from 表;
-- 查询对应列不重复的记录条数
select count(distinct 列) from 表;
12.3 FIRST() 查询第一条(PS:oracle中表达式不一样)
--oracle中first()函数的表达方式
SELECT
列
FROM
表
ORDER BY
列 ASC
WHERE
ROWNUM <= 1;
12.4 LAST() 查询最后一条(PS:oracle中表达式不一样)
--oracle中last()函数的表达方式
SELECT
列
FROM
表
ORDER BY
列 DESC
WHERE
ROWNUM <= 1;
12.5 MAX()最大值 MIN()最小值
--指定列的最大值
SELECT MAX(列) FROM 表;
--指定列的最小值
SELECT MIN(列) FROM 表;
12.6 SUM()统计指定列的值
--统计指定列的总和
SELECT SUM(列) FROM 表;
12.7 GROUP BY()分组(通常做统计时结合聚合函数用)
--分组统计
SELECT 聚合函数(列)
FROM 表
GROUP BY 列;
12.8 HAVING(筛选分组后的各组数据)
--HAVING与where用法类似
PS:增加 HAVING 子句原因是WHERE 关键字无法与聚合函数一起使用
PS:HAVING 子句可以让我们筛选分组后的各组数据
SELECT 列, 聚合函数(列)
FROM 表
WHERE 条件
GROUP BY 列
HAVING 聚合函数(列) 条件;--这行的目的是为了在分组之后再次根据聚合函数筛选
13. 标量函数
13.1 UCASE()大写转换 LCASE()小写转换
--把查询结果对应的列进行大写转换
SELECT UCASE(列) FROM 表;
--把查询结果对应的列进行小写转换
SELECT LCASE(列) FROM 表;
13.2 SUBSTR()提取字符
--从文本字段中提取字符
PS:Oracle 中没有 MID 函数,substr 函数有类似功能
/*
column_name 必需。要提取字符的字段。
start 必需。规定开始位置(起始值是 1)。
length 可选。要返回的字符数。如果省略,则 substr() 函数返回剩余文本。
*/
SELECT SUBSTR(列,起始位置[,长度]) FROM TABLE_NAME;
13.3 LEN()返回长度
--返回文本字段中值的长度
SELECT LEN(列) FROM 表;
13.4 ROUND()舍入为指定位数的小数
--舍入为指定位数的小数
SELECT ROUND(列,位数) FROM 表;
--例子:
SELECT ROUND(1234.5678,4) FROM DUAL;
PS:dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。
PS:由于上表的1234.5678已经是确定的数,不用从相应的表查询,所以这里可以用dual来保持标准格式。
13.5 SYSDATE获取当前时间
--获取当前时间
SELECT SYSDATE FROM dual;
13.6 NVL(expr1,expr2)空处理函数
--nvl函数:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。
NVL(expr1,expr2);
转载自:有梦想的肥宅