【问题标题】:MySQL count row values across many columnsMySQL 计算多列中的行值
【发布时间】:2015-10-21 07:18:58
【问题描述】:

我一直在寻找一种简单的方法来使用条件计算一行中的列值,这让我很疯狂。我需要帮助,因为我对 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

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

【问题讨论】:

    标签: mysql sum multiple-columns


    【解决方案1】:

    我不是 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多