在SQL中选择/转换输出为整数

MrG*_*ass 24 mysql sql int

我正在开发一个网站,要求我显示用户输入每天平均数量的图表.我已经有一个SQL查询,它会将此信息返回给我:

SELECT sum(number)/count(number) as average, date FROM stats WHERE * GROUP BY date
Run Code Online (Sandbox Code Playgroud)

这给了我正在寻找的结果,但结果以三位小数精度给出.我想围绕这个数字.当然,我可以在PHP或我的模板引擎中完成它,但我很好奇是否有办法在数据库中完成所有这些操作.

有没有办法将输出转换为整数(在MySQL中)?

Ole*_*Dok 35

SELECT 
  CAST(sum(number)/count(number) as UNSIGNED) as average, 
  date 
FROM stats 
WHERE * 
GROUP BY date
Run Code Online (Sandbox Code Playgroud)

  • -1.如果您使用"INT"作为类型,您将收到错误.可以在http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#function_convert文档中看到CAST/CONVERT的可用类型. (7认同)

Mar*_*ith 21

CASTMySQL中的有效类型如下

  • BINARY[(N)]
  • CHAR[(N)]
  • DATE
  • DATETIME
  • DECIMAL[(M[,D])]
  • SIGNED [INTEGER]
  • TIME
  • UNSIGNED [INTEGER]

所以你可以使用

SELECT CAST(sum(number)/count(number) AS UNSIGNED) as average...
Run Code Online (Sandbox Code Playgroud)

或者,SIGNED如果SUM零件可以加起来为负数.


Joh*_*Woo 6

如何使用MySQL FORMAT功能?

mysql> SELECT FORMAT(12345.123456, 4);
+-------------------------+
| FORMAT(12345.123456, 4) |
+-------------------------+
| 12,345.1235             |
+-------------------------+
1 row in set (0.00 sec)

mysql> SELECT FORMAT(12345.123456, 0);
+-------------------------+
| FORMAT(12345.123456, 0) |
+-------------------------+
| 12,345                  |
+-------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)


dje*_*lin 6

使用DIV运营商.

mysql> SELECT 5 DIV 2;
    -> 2
Run Code Online (Sandbox Code Playgroud)

整数除法.与FLOOR()类似,但BIGINT值是安全的.对于超出BIGINT范围的非整数操作数,可能会出现不正确的结果.