首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >投还是不投?

投还是不投?
EN

Stack Overflow用户
提问于 2011-07-02 04:17:12
回答 3查看 683关注 0票数 4

我正在开发一个使用另一位程序员编写的MySQL查询的系统,并且正在调整他的代码。

我有三个问题:

1.

其中一个查询包含以下select语句:

代码语言:javascript
复制
SELECT
   [...]
   AVG(mytable.foo, 1) AS 'myaverage'`, 

AVG(mytable.foo, 1) AS 'myaverage'中的%1合法吗?我找不到文档来支持它的用法?

2.

这个结果给出了小数点后两位的平均值,为什么?

3.

我正在使用它来创建一个临时表。所以:

代码语言:javascript
复制
(SELECT
    [...]
    AVG(`mytable`.`foo`, 1) AS `myaverage`,
FROM
    [...]
WHERE
    [...]
GROUP BY
    [...])
UNION
(SELECT
    [...]
FROM
    [...]
WHERE
    [...]
GROUP BY
    [...])
) AS `tmptable`
ORDER BY
    `tmptable`.`myaverage` DESC

当我按照这一列对表进行排序时,我得到的输出表明这个平均值是以字符串的形式存储的,所以结果如下:

9.3

11.1

为了解决这个问题,我应该使用什么?

我应该使用CAST还是CONVERT,像DECIMAL (我读取的基本上是二进制),BINARY本身,或者UNSIGNED?

或者,当我在AS语句中命名myaverage时,有没有办法说明它应该是一个整数?

类似于:

代码语言:javascript
复制
SELECT
    AVG(myaverage) AS `myaverage`, INT(10)

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-19 00:07:53

对于感兴趣的人来说,我一定是删除或更改了以前的代码,所以这个AVG问题是不正确的。正确的代码是ROUND(AVG(myaverage),1)。我要向那些对我的愚蠢大加指责的人道歉。

票数 0
EN

Stack Overflow用户

发布于 2011-07-13 04:42:10

关于你的最后一个问题:你能准确地发布你正在使用的MySQL查询吗?

UNION中列的结果类型由您返回的所有内容决定。参见http://dev.mysql.com/doc/refman/5.0/en/union.html

因此,即使您的AVG()函数返回一个DOUBLE,UNION的其他部分仍然可能返回一个字符串。在这种情况下,结果的列类型将是字符串。

请参见以下示例:

代码语言:javascript
复制
mysql> select a from (select 19 as a union select '120') c order by a;
+-----+
| a   |
+-----+
| 120 |
| 19  |
+-----+
2 rows in set (0.00 sec)

mysql> select a from (select 19 as a union select 120) c order by a;
+-----+
| a   |
+-----+
|  19 |
| 120 |
+-----+
2 rows in set (0.00 sec)
票数 1
EN

Stack Overflow用户

发布于 2011-07-02 05:15:47

On1.avg()只接受一个参数,否则MySQL会抛出一个错误:

代码语言:javascript
复制
mysql> SELECT AVG( id, 1 ) FROM anytable;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 1 )' at line 1

http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_avg

仅仅因为我很好奇-第二个参数应该做什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6552820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档