【mysql】SUM、FORMAT以及CONVERT

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lluozh2015/article/details/84309832

**

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'}

猜你喜欢

转载自blog.csdn.net/lluozh2015/article/details/84309832