八、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);

转载自:有梦想的肥宅