sql常用记录

本文介绍了SQL查询中的统计方法,包括总数计算,按条件统计及成功率的计算。同时,提到了流程控制结构如IF和IFNULL在SQL中的应用,以及COUNT和SUM函数的细节。还讨论了数据类型转换函数CAST和CONVERT的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

统计sql: 总数、按条件统计总数  成功率
SELECT
date(create_time), 
count(1), 
count(IF(order_status = "SUCCESS",1,null)), 
count(IF(order_status = "CLOSED" and order_close_reason = "REQUEST_CLOSE",1,null)), 
count(IF(order_status = "CLOSED" and order_close_reason = "TIME_OUT_CLOSE",1,null)), 
count(IF(order_status <> "SUCCESS" and order_status <> "CLOSED",1,null))
 from table_name
WHERE
create_time >= '2023-02-01'
group by date(create_time);

2、统计成功率


SELECT
date(create_time),
count(1) as '总数', 
count(IF(bind_status='SUCCESS',1,null)) as '成功数',
count(IF(bind_status='SUCCESS',1,null))/count(1) as  '成功率'

FROM
表名
WHERE 
 create_time>'2023-06-10'   GROUP BY date(create_time)

3、

流程控制的常见用法:
流程控制结构经常会结合聚合函数(如 count、sum 等)一起使用。 当然,也可单独使用,比如新增一个列值。

  • IF(expr1, expr2, expr3) 

如果 expr1 为 true (不为 0 和 NULL),则 IF() 的返回值为 expr2;否则,返回值为 expr3 。

示例:

SELECT count(IF(status='SUCCESS',1,null)) from table where  create_time >CURDATE();

  • IFNULL(expr1, expr2) 

如果 expr1 为 NULL,则 IFNULL() 的返回值为 expr2;否则其返回值为 expr1 。

示例:

SELECT IFNULL(count(IF(status='SUCCESS'  and close_status = 'NOT_CLOSE',1,null))/COUNT(1),0) from table where  create_time >CURDATE();

  • NULLIF(expr1, expr2) 

如果 expr1 等于 expr2 成立,那么返回值为 NULL ;否则,返回值为 expr1 。

4、MySQL 中关于 count 和sum 函数的说明:

  • count


count(*) 只要记录存在,就会进行计数。
count(col_name) 只有当字段 col_name 的值不为 null 时,才会进行计数。
count(1) 只要记录存在,就会进行计数,执行速度比 count(*) 要快。数值 1 可以用其他的任意数值替代,比如 0 或者 9 。
count(null) 的结果为 0,等同于 count(NULL) 。
count() 函数的结果不可能为 null,只会大于或等于 0。

  • sum


sum(col_name) 对字段 col_name 进行求和。如果 col_name 的值为 null ,就会忽略;如果记录不存在,结果为 null ;如果所有记录的值都是 null ,结果为 null 。
sum(null) 的结果为 null 。
sum() 函数的结果可能为 null 。

5、

cast() 和 convert() 函数可以将 value 值,从当前数据类型转换为另一种数据类型。

SELECT NOW(),CAST(NOW() AS date),CONVERT(NOW(), date);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值