MySQL计算许多列的行值

时间:2015-10-21 07:18:58

标签: mysql sum multiple-columns

我一直在寻找一种使用条件在一行中计算列值的简单方法,这一直让我走向疯狂。我需要帮助,因为我对mysql完全陌生。我的表看起来像这样:

studentid | jan | feb | mar | apr | may | jun
----------+-----+-----+-----+-----+-----+----
     1    |   1 |   0 |  0  | 0.5 | 0.2 | 0
     2    |   0 |   0 |  1  | 0   | 0   | 0.6
     3    |   1 | 0.3 |  0  | 0.5 | 0.2 | 0

我希望获得的预期结果是计算行中的列数(例如:studentid = 1),其中列大于0.最终结果应该是这样的:

studentid | jan | feb | mar | apr | may | jun | Count 
----------+-----+-----+-----+-----+-----+-----+------
     1    |   1 |   0 |  0  | 0.5 | 0.2 | 0   | 3
     2    |   0 |   0 |  1  | 0   | 0   | 0.6 | 2
     3    |   1 | 0.3 |  0  | 0.5 | 0.2 | 0   | 4

我非常需要一些帮助。 非常感谢。

1 个答案:

答案 0 :(得分:0)

我不是MySQL专家,但我认为没有一种自动化的方法可以“忽略”其中的表格。但是,如果列数不可变,则可以将它们相加:

SELECT *,
  IF(jan>0,1,0) +
  IF(feb>0,1,0) +
  IF(mar>0,1,0) +
  IF(apr>0,1,0) +
  IF(may>0,1,0) +
  IF(jun>0,1,0)
    AS Count
FROM students  

这并不是特别有效,但它有效: Here's a SQL fiddle