mysql根据条件计算成一列

时间:2014-11-17 15:34:19

标签: mysql sql

我有一张t_personne表。 我为每个人编码一般表格。 我还编了一张桌子"采访" (t_entretien)每个项目的存在(proj_id)。 对于项目,它可以有多个动作。 项目行动" RAE"编码:2-01.01,2-02.01,2-02.02 ...... 2-03.01,2-03.02等。

我有以下计算规则:一个单位等于两个不同类别中的2个动作到编码的动作中。 例如,具有一个动作2-02.01和2-03.01具有2-03.04动作的人将仅被计为一个单元。 拥有4种2-03种类型的人不计算在内。 我必须计算单位总数。

我开始思考:

SELECT COUNT(*) AS Expr1
FROM (SELECT t_entretien.id
      FROM t_entretien 
      INNER JOIN
      t_action on t_action.cact_caction = t_entretien.ent_id
      GROUP BY t_entretien.id
      HAVING(COUNT(DISTINCT t_action.cact_caction) > 1)) AS derivedtbl_1

这是一个小FIDDLE http://sqlfiddle.com/#!2/6c831/1

谢谢大家!

上下文如下。

我得到一个人(t_personne)并使用表格我介绍一般数据。

这个人,我在面试时参加了一个项目(t_projet)(t_entretien)。 在采访中,我意识到了行动。 每个动作都是特定的项目(t_action)。 对于该项目,包括" cact_code"是2,我选择了不同的编码动作(参见表t_codeaction)。

我的问题如下。我必须根据强加给我的公式计算行动的数量:一个单位=属于不同类别的2个行动。类别标识如下(t_codeaction):2-01此类别只有一个动作(2-01.01),以下类别包括4个动作2-02和第3类中的2-03包括12个动作等。 想象一下这个人" ent_id" = 8105收到4个动作,一个在2-01.01类别中,另一个在2-03个中。它是规则中的唯一一个单元,因为它至少收到了两个不同类别的动作。 2-03类别中的3个操作可用于操作。因此,那个" ent_id" = 8114仅收到同一类2-03的3个动作,此单位为0。

1 个答案:

答案 0 :(得分:0)

我可能很讨厌,因为问题描述不好,但无论如何,这样的事情呢?

SELECT id as entretiedId, count(*)/2 as units from
 (SELECT t_entretien.id, SUBSTRING(t_action.cact_caction,1,4) as CATEGORY, COUNT(*) 
  FROM t_entretien 
  INNER JOIN
  t_action on t_action.ent_id = t_entretien.ent_id
  GROUP BY t_entretien.id, CATEGORY) as t_derived
GROUP BY id having count(distinct category) > 1

派生表计算操作,但每个类别每行一行。然后外部group by计算每个类别的子行为,并除以二来计算单位。

小提琴:http://sqlfiddle.com/#!2/6c831/22/0