【mysql】SUM、FORMAT以及CONVERT

**

SUM()函数

**
在mysql语句中,SUM() 函数用于计算一组值或表达式的总和

SUM()函数的语法如下:

SUM(DISTINCT expression)

SUM()函数是如何工作的?

  • 如果在没有返回匹配行SELECT语句中使用SUM函数,则SUM函数返回NULL,而不是0
  • DISTINCT运算符允许计算集合中的不同值
  • SUM函数忽略计算中的NULL值

使用实例

SELECT SUM(case_all) case_all FROM interface_case_daily WHERE project_id ='SWAPI'

执行上面查询语句,得到以下结果

+-----------+
| case_all     |
+-----------+
| 356   |
+-----------+
1 row in set

如果使用python,执行sql语句,打印结果时,输出的结果为:

{'case_all': Decimal('434')}

但是如果想获取SUM的数值,该怎么处理呢?FORMAT()函数用于格式化SUM()函数的返回值

**

FORMAT()

**

FORMAT函数在mysql中是数据内容格式化,可以格式化数据为整数或者浮点数

SELECT FORMAT(100000,2)

输出结果:
100,000.00

格式化数据为浮点数

select format(100.31111,2)

输出结果:
100.31

格式化数据为整数

select format(100.31111,0)

输出结果:
100

但是,format()函数返回类型是字符串,满三位会加一个逗号

这个问题应该怎么解决呢?网上普遍都是推荐使用convert或cast的方法
比如

convert(param, decimal(12,2)) 

cast(param as decimal(12,2))

**

convert()

**

执行mysql语句

SELECT convert(SUM(case_all), decimal(12,2)) case_all FROM interface_case_daily WHERE project_id ='SWAPI'

输出结果为:

{'case_all': Decimal('434.00')}

那到底convert怎么使用呢?

mysql 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下:

CAST(value as type)
CONVERT(value, type)

可以转换的类型是有限制的。这个类型可以是以下值其中的一个:

  • 二进制,同带binary前缀的效果 : BINARY
  • 字符型,可带参数 : CHAR()
  • 日期 : DATE
  • 时间: TIME
  • 日期时间型 : DATETIME
  • 浮点数 : DECIMAL
  • 整数 : SIGNED
  • 无符号整数 : UNSIGNED

例子

SELECT CONVERT('23',SIGNED)

输出

+----------------------+
| CONVERT('23',SIGNED) |
+----------------------+
|                   23 |
+----------------------+
1 row in set

故sql语句为:

SELECT convert(SUM(case_all),SIGNED) case_all FROM interface_case_daily WHERE project_id ='SWAPI'

执行python中该sql语句,输出结果为:

{'case_all': 434}

补充,datetime格式转字符串格式

如,python中获取时间格式的数据

SELECT date FROM interface_case_daily WHERE project_id ='SWAPI'

输出为:

{'date': datetime.datetime(2018, 11, 1, 0, 0)}

将date格式转为字符串格式

SELECT convert(date,CHAR) date FROM interface_case_daily WHERE project_id ='SWAPI'

输出为:

{'date': '2018-11-01 00:00:00'}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sysu_lluozh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值