我一直在寻找一种使用条件在一行中计算列值的简单方法,这一直让我走向疯狂。我需要帮助,因为我对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
我非常需要一些帮助。 非常感谢。
答案 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