mysql - 聚合条件,当

标签 mysql sql group-by case amazon-redshift

我有一个结构类似于下面的数据集

fruit, value
apple, 234
apple, 2341
pear, 3233
grape, 323
pear, 3234
grap 1234

我试图通过执行如下查询来查找位于该范围底部 10% 的数字范围的计数。 (查询的最终目标是计算并查看计算范围以 10% 的增量增加)我还有一个 group by 子句,所以我希望计数按水果分组并以这种方式聚合。下面是我尝试过的查询

select fruit, count(case when (value <= (((max(value) - min(value)) * .1) + min(value))) then 1 end)
from fruit_juice
group by substring(fruit, 5, 5);

最佳答案

聚合 from 子句中的表以获得所需的限制。 将这些结果加入到您的查询中,并将这些值用于查询:

select substring(fj.fruit, 5, 5),
       sum(fj.value <= fmm.minv + (fmm.maxv - fmm.minv) * 0.1)
from fruit_juice fj join
     (select substring(fruit, 5, 5) as fruit5,
             max(value) as maxv, min(value) as minv
      from fruit_juice
      group by substring(fruit, 5, 5)
     ) fmm
     on fmm.fruit5 = substring(fj.fruit, 5, 5)
group by substring(fruit, 5, 5);

请注意,您的 group by 表达式应与 select 子句中的表达式匹配。

编辑:

我不确定您问题中的 substring() 来自何处,因此此版本将其删除:

select fj.fruit, sum(fj.value <= fmm.minv + (fmm.maxv - fmm.minv) * 0.1)
from fruit_juice fj join
     (select fruit,
             max(value) as maxv, min(value) as minv
      from fruit_juice
      group by fruit
     ) fmm
     on fmm.fruit = fj.fruit
group by fruit;

关于mysql - 聚合条件,当,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30920139/

相关文章:

php - 如何将数据库表中的 SQL 数据回显到 <select> 表单中?

sql - 无法连接到 SQL Express“错误 : 26-Error Locating Server/Instance Specified)

sql - 如何从 SQL Server 创建可移植插入?

python - 将 Pandas 转为 pyspark 表达式

mysql - 为什么此代码能够在 HAVING 中使用来自 SELECT 的别名?

mysql - 分组依据 - 返回零计数

php foreach 循环行为

PHP & MySQL : Check if table's data has changed without polling?

MySQL:优化评分计算查询

mysql - 复杂SQL查询: Two queries within the same table?