Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 错误代码:1111。尝试在IF条件下使用Max函数时组函数的使用无效_Mysql_Sql - Fatal编程技术网

Mysql 错误代码:1111。尝试在IF条件下使用Max函数时组函数的使用无效

Mysql 错误代码:1111。尝试在IF条件下使用Max函数时组函数的使用无效,mysql,sql,Mysql,Sql,我有一个表category_模型,其中包含列-category_id、start_range、end_range和percentile 类别id为varchar类型,例如C1、C2、C3 起始范围和结束范围是浮动值,例如-0.25到4.65 我试图检查在一定范围内的分数,并返回相应的百分位数 以下查询返回错误代码1111组函数的使用无效- SELECT max(IF(spm.start_range <= 1.19 AND spm.end_range >= 1.19, spm.perc

我有一个表category_模型,其中包含列-category_id、start_range、end_range和percentile

类别id为varchar类型,例如C1、C2、C3 起始范围和结束范围是浮动值,例如-0.25到4.65

我试图检查在一定范围内的分数,并返回相应的百分位数

以下查询返回错误代码1111组函数的使用无效-

SELECT max(IF(spm.start_range <= 1.19 AND spm.end_range >= 1.19, spm.percentile, IF(max(spm.end_range) < 1.19, 99, 0))) AS percentile
FROM category_model spm
WHERE spm.category_id = 'C1'
如果我用下面的查询替换它,它可以正常工作,但是我无法检查边界条件se.g。分数超出最小开始值或最大结束值范围

SELECT max(IF(spm.start_range <= 1.19 AND spm.end_range >= 1.19, spm.percentile, 0)) AS percentile
FROM category_model spm 
WHERE spm.category_id='C1'

有办法解决这个问题吗?我使用的是MySql版本5.2,不允许多聚合函数组合

使用子查询尝试此操作:

SELECT max(IF(spm.start_range <= 1.19 AND spm.end_range >= 1.19, spm.percentile, IF((SELECT MAX(end_range) FROM category_model) < 1.19, 99, 0))) AS percentile
FROM category_model spm
WHERE spm.category_id = 'C1'
使用子查询


注意:-此处spm.category\u id='C1'条件用于计算max\u end\u range如果这不是您想要的,则删除该条件。

您可以向我们显示示例数据以及查询逻辑吗?第二次嵌套调用max时的条件是什么?我已经为该问题添加了更多信息。
SELECT 
    max(
        IF(
            spm.start_range <= 1.19 AND spm.end_range >= 1.19, 
            spm.percentile, 
            IF(x.max_end_range < 1.19, 99, 0)
        )
    ) AS percentile
FROM category_model spm
cross join (
    select max(end_range) max_end_range
    FROM category_model
    WHERE spm.category_id = 'C1'
) x
WHERE spm.category_id = 'C1'