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