MySql Sql MAX 和 SUM 错误

Posted

技术标签:

【中文标题】MySql Sql MAX 和 SUM 错误【英文标题】:MySql Sql MAX and SUM error 【发布时间】:2011-01-05 19:37:26 【问题描述】:
select sum(value) as 'Value',max(value)
from table_name where sum(value)=max(sum(value)) group by id_name;

错误是:组函数使用无效(ErrorNr. 1111)

有什么想法吗?

谢谢。

【问题讨论】:

max(sum(value)) 引起了问题?你想得到什么? 我只想选择 sum(value) 最大的记录。 【参考方案1】:

你可以试试

SELECT Value, MXValue
FROM (
       select sum(value) as 'Value',max(value)  MXValue
       from table_name 
       group by id_name
     ) as t1
order by value desc
LIMIT 0,1

来自mysql Forums :: General :: selecting MAX(SUM())

或者你可以尝试类似的东西

SELECT  id_name,
        Value
FROM    (
            select id_name,sum(value) as 'Value'
            from table_name
            group by id_name
        ) t
WHERE   Value = (
                    SELECT TOP 1 SUM(Value) Mx 
                    FROM table_name
                    GROUP BY id_name 
                    ORDER BY SUM(Value) DESC
                )

甚至是内部连接

SELECT  id_name,
        Value
FROM    (
            select id_name,sum(value) as Value
            from table_name
            group by id_name
        ) t INNER JOIN
        (
            SELECT TOP 1 SUM(Value) Mx 
            FROM table_name
            GROUP BY id_name 
            ORDER BY SUM(Value) DESC
        ) m ON Value = Mx

【讨论】:

【参考方案2】:

=max(sum(value)) 部分需要比较两个分组选择的结果,而不仅仅是一个。 (总和的最大值。)

不过,让我们退后一步:您实际上想要获取哪些信息?因为表中值的总和是唯一的;没有最小值或最大值(或者,根据您的观点,有——该值是它自己的最小值和最大值)。您需要在其中应用一些进一步的标准才能使结果有意义,这样做您可能需要使用某些标准进行连接或子选择。

【讨论】:

以上是关于MySql Sql MAX 和 SUM 错误的主要内容,如果未能解决你的问题,请参考以下文章

MySQL max函数获取最大值错误

MySQL导入sql文件,过大导致错误

使用函数 SUM() 和 Group by 将 Mysql 查询转换为 SQL 查询

mysql之count,max,min,sum,avg,celing,floor

MySQL Got a packet bigger than 'max_allowed_packet' bytes错误配置

Mysql 优化 MIN、MAX 和 SUM 的索引开销