Mysql 按嵌套查询中存在的字段分组

Mysql 按嵌套查询中存在的字段分组,mysql,Mysql,我想感谢您为我提供了答案,这里是一个SQL提琴 -此查询将返回问题的所有属性 从dataissue中选择*,其中issue='25998' 我想做的是: sum(value) count(value) where field = 'version(s)_corrigée(s)' and value = 'Fermée' and field = 'point_d_effort' and value = 'récit' and group it by value where

我想感谢您为我提供了答案,这里是一个SQL提琴

-此查询将返回问题的所有属性

从dataissue中选择*,其中issue='25998'

我想做的是:

sum(value) count(value)    

where field = 'version(s)_corrigée(s)'

and value  = 'Fermée' 

and  field = 'point_d_effort'

and value = 'récit'

and group it by value where field = 'version(s)_corrigée(s)' 

例如,此查询返回group by,但由于使用了外部查询的字段,因此总和会爆炸:


sqlfiddle.com/!9/610e7/4

我怀疑你想要这样的东西:

select sum(case when field = 'point_d_effort' then value + 0 end), as v 
       sum(field = 'point_d_effort') as cnt
from dataissue
group by issue
having sum(field = 'version(s)_corrigée(s)' and value  = 'Fermée') > 0 and
       sum(field = 'Type de demande' and value = 'récit')  > 0;
您有一个实体属性值EAV数据结构。一种方法是首先按键进行聚合。如果需要所有问题的合计,则需要另一个聚合:

select sum(v), sum(cnt)
from (select sum(case when field = 'point_d_effort' then value + 0 end), as v 
             sum(field = 'point_d_effort') as cnt
      from dataissue
      group by issue
      having sum(field = 'version(s)_corrigée(s)' and value  = 'Fermée') > 0 and
             sum(field = 'Type de demande' and value = 'récit')  > 0
    ) t

我觉得这很令人困惑。value是一个文本字段,那么sumvalue是什么意思呢?字段='versions\u corringées'和字段='point\u d\u efforce'Hi…将有零行。。。值,其中field='point\u d\u efforce'是一个数字。事实上,这个值有number,其中field='point\d\u efforce'如果您使用这些sql查询,您将看到:select value from dataissue,其中field='point\d\u efforce'我认为您的数据库设计有问题。我只是不明白你想要完成什么。我想要一个sumvalue,计算'value',其中field='versions_corringées',value='Fermée',field='point____éefforce',value='récit',并按值分组,其中field='versions_corringées'类似于自加入表格。使用这些条件并将其与一个特定字段分组,该字段是versions_corringées,以便更清楚地看到在单独的查询中尝试使用这些条件中的每一个,我想做的是将所有这些条件放在一个查询中,并将其与该特定字段分组。例如,此查询返回group by,但由于我们使用外部查询字段:在这个查询中有我需要的总数。。。现在如何在内部查询中使用字段进行分组我很高兴有人理解这个问题。将多个数据类型放在一列中不是一种糟糕的做法吗?下面是字段和链接到它们的值:字段值版本\u corrigee-->sprint 1,冲刺5。。。输入demande-->背诵etat-->fermee point_d__努力-->数字10,20@TomasoAlbinoni . . . 列只有一个数据类型,可能是字符串。是的,通常不鼓励将其他值编码为字符串,但EAV瓶子是合法的数据模型,有其用途。