SQL 统计某时段下交易成功率的百分比(初学sql函数总结)

简单列举出一些日常开发中不太常见的sql函数:

1、对查询结果为null的数据赋值:

NVL有两个参数,只有第一个参数为null才会赋值第二个参数

NVL('字段值','默认值')

2、对某值进行截取操作:

和java代码中的substring很相像,第二个参数为截取起始下标,第三个参数为截取终止下标

SUBSTR('待截取值 一般为某字段',0,8)

3、对查询结果值保留小数位 四舍五入:

对数字进行四舍五入到整数位

-- 输出结果:1235
SELECT ROUND(1234.5678) AS ROUNDED_NUMBER FROM DUAL;

对数字进行四舍五入到指定小数位

ROUND('需要进行四舍五入的数字', decimal_places)
-- decimal_places为正数表示保留指定位数的小数
-- decimal_places为负数表示保留指定位数的整数
-- 输出:3.14
SELECT ROUND(3.14159,2) FROM DUAL;

4、将查询出的两个结果集进行拼接成一个结果集:

-- 查询的结果集:id为1和2的两条数据
SELECT * FROM '表名' where id = 1
UNION ALL
SELECT * FROM '表名' where id = 2;

5、sql版本的 if else (个人比较愿意这么称呼):

-- 对查询结果字段为1的值做出修改
CASE WHEN '字段名' = '1' THEN '修改后的值' END


-- 大概就是这个样子 
-- 函数编写开始关键字
CASE
    -- if
    WHEN ... THEN ... 
    -- else if 
    WHEN ... THEN ... 
    -- else
    ELSE ...
-- 函数编写结束关键字
END 

以上是对下列sql中使用到的函数做出的一些简单讲解,下面正式看下

-- 统计某时段下交易成功率的百分:

-- 一、要求:统计2024年一月份所有交易的成功率
-- 二、表名:OPEN_ACCT_LOG
-- 三、相关字段说明:
-- 1、TRANS_CODE 交易码 (不同交易对应不同的交易码)
-- 2、TRANS_RESULT 交易结果 (1-成功; 2-失败)
-- 3、UPDATE_TIME 更新时间为14位, 需要截取到8位
-- 【语句中(|| '%')仅仅是做字符串拼接 显示美观】
SELECT 
TRANS_CODE AS "交易码",
ROUND(COUNT(CASE WHEN TRANS_RESULT = '1' THEN 1 END) 
/ (CASE WHEN COUNT(*) = 0 THEN 1 ELSE COUNT(*) END) * 100,2) || '%' AS "交易成功率"
FROM 
OPEN_ACCT_LOG
WHERE 
TRANS_CODE IN(SELECT TRANS_CODE FROM OPEN_ACCT_LOG 	
	WHERE SUBSTR(UPDATE_TIME,0,8) >= '20240101' AND SUBSTR(UPDATE_TIME,0,8) <= '20240201') 
AND SUBSTR(UPDATE_TIME,0,8) >= '20240101' 
AND SUBSTR(UPDATE_TIME,0,8) <= '20240201'
GROUP BY TRANS_CODE;

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值