4

次のようなデータベースがあります。

USER   12am 1am 2am 3am 4am 5am 6am 7am 8am 9am 10am 11am 12pm
--------------------------------------------------------------
user1   5    0   6   7   8   0   9   0   0   0   0    0    0

すべての列の平均が必要です。列を簡単に合計できますが、値が 0 より大きい列の数を取得したいと考えています。この場合は 5 になります。そうすれば、35/5 を除算して 7 を取得できます。

4

1 に答える 1

2

これを試して:

SELECT a.user, 
        (
             (a.12am + a.1am + a.2am + a.3am + a.4am + a.5am + a.6am + a.7am + a.8am + a.9am + a.10am + a.11am + a.12pm) 
            / 
             (IF(a.12am > 0, 1, 0) + 
              IF(a.1am > 0, 1, 0) + 
              IF(a.2am > 0, 1, 0) + 
              IF(a.3am > 0, 1, 0) + 
              IF(a.4am > 0, 1, 0) + 
              IF(a.5am > 0, 1, 0) + 
              IF(a.6am > 0, 1, 0) + 
              IF(a.7am > 0, 1, 0) + 
              IF(a.8am > 0, 1, 0) + 
              IF(a.9am > 0, 1, 0) + 
              IF(a.10am > 0, 1, 0) + 
              IF(a.11am > 0, 1, 0) + 
              IF(a.12pm > 0, 1, 0)
             )
        )
FROM tableA a 
GROUP BY a.user;
于 2013-12-24T15:02:43.800 に答える