题解 | 支付间隔平均值
select cast(avg(abs(timestampdiff(second,o.logtime,s.logtime))) as signed) gap from order_log o left join select_log s on o.order_id=s.order_id
1、AVG函数,CEILING函数(向上取整),abs 默认返回的结果是浮点数
2、cast()
CAST
是 SQL 中的一个数据类型转换函数,用于将某个表达式转换为指定的数据类型。
语法
sql复制代码CAST(expression AS target_type)
参数说明
expression
:要转换的表达式,可以是字符串、数字、日期、时间等。target_type
:目标数据类型,例如SIGNED
(有符号整数)、UNSIGNED
(无符号整数)、CHAR
(字符串)、DECIMAL
(小数)、DATE
(日期)、DATETIME
(日期时间)等。
功能
CAST
的作用是将一种数据类型明确地转换为另一种数据类型,常用于数据清洗、格式调整或解决类型不匹配问题。
常见用法
1. 转换为整数
sql复制代码CAST(expression AS SIGNED) -- 转为有符号整数 CAST(expression AS UNSIGNED) -- 转为无符号整数
示例:
sql复制代码SELECT CAST('123.45' AS SIGNED); -- 输出: 123 SELECT CAST('-45.6abc' AS UNSIGNED); -- 输出: 0
2. 转换为字符串
sql复制代码CAST(expression AS CHAR)
示例:
sql复制代码SELECT CAST(123 AS CHAR); -- 输出: '123' SELECT CAST(2025-01-18 AS CHAR); -- 输出: '2024'
3. 转换为日期或时间
sql复制代码CAST(expression AS DATE) -- 转为日期 CAST(expression AS DATETIME) -- 转为日期时间
示例:
sql复制代码SELECT CAST('2025-01-18 15:30:00' AS DATE); -- 输出: '2025-01-18' SELECT CAST('2025-01-18' AS DATETIME); -- 输出: '2025-01-18 00:00:00'
4. 转换为小数
sql复制代码CAST(expression AS DECIMAL(length, decimals))
示例:
sql复制代码SELECT CAST('123.456' AS DECIMAL(10, 2)); -- 输出: 123.46 SELECT CAST('12abc' AS DECIMAL(5, 1)); -- 输出: 12.0
3、decimal()
DECIMAL
是一种精确的数值数据类型,通常用于存储需要高精度的定点数,例如货币、财务数据等。DECIMAL
数据类型允许用户指定整数部分和小数部分的位数,避免因浮点运算导致的精度误差。
语法
sql复制代码DECIMAL[(M, D)]
M
:表示数字的总位数(精度),包括小数点前后的所有数字。最大值为 65。D
:表示小数位数(标度),即小数点后的位数。最大值为 30,且不能大于M
。- 如果未指定
M
和D
,默认值是DECIMAL(10, 0)
,即整数部分最多 10 位,小数位为 0。
特点
- 精确存储:DECIMAL 不像 FLOAT 或 DOUBLE 使用近似值存储,它可以确保高精度。
- 性能:因为 DECIMAL 精确存储数值,其性能可能略低于浮点型,但在需要精确计算的场景中非常重要。
- 约束:如果插入的值超出 M 位数限制,会抛出错误。如果小数位数超出 D 的限制,数据库会对其进行四舍五入。
4、FLOAT 和 DOUBLE
概念
FLOAT
和 DOUBLE
是浮点数类型,用于存储带小数的数字,适合处理需要大范围数值但不要求完全精确的场景(如科学计算)。
区别 float double
精度 | 单精度,精度较低 | 双精度,精度更高 |
存储范围 | -3.402823466E+38 至 3.402823466E+38 | -1.7976931348623157E+308 至 1.7976931348623157E+308 |
存储大小 | 4 字节 | 8 字节 |
精确性 | 存在精度误差 | 精度误差较小 |
性能 | 性能更好,占用内存小 | 性能略低,占用内存大 |
5、floor()、ceil()、round()
| 向下取整,返回不大于当前值的最大整数 |
|
|
| 向上取整,返回不小于当前值的最小整数 |
|
|
| 四舍五入,返回最接近的整数 |
|
|