【发布时间】:2013-10-17 12:26:43
【问题描述】:
我有一个数据库,例如:
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。
【问题讨论】:
-
哦,请标准化你的表,这个设计太糟糕了。使用规范化表格会更容易。
-
stackoverflow 应该创建“sql 非规范化”徽章...关于这个问题很多..
-
@RaymondNijland 称其为“异常洞察力”或“超自然体验”
-
与在列中求和的方式相同,但添加
IF(val1>0,1,0)+(val2>0,1,0) +...... 我猜无需提及规范化。 -
@bluefeet 然而......你可以使用 UNPIVOT of Justice and Restoration
标签: mysql sql select group-by average