Mysql Count Columns 大于 0
Posted
技术标签:
【中文标题】Mysql Count Columns 大于 0【英文标题】:Mysql Count Columns Greater Than 0 【发布时间】: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。
【问题讨论】:
哦,请标准化你的表,这个设计太糟糕了。使用规范化表格会更容易。 *** 应该创建“sql 非规范化”徽章...关于这个问题很多.. @RaymondNijland 称其为“异常洞察力”或“超自然体验” 与在列中求和的方式相同,但添加IF(val1>0,1,0)+(val2>0,1,0) +...
... 我猜无需提及规范化。
@bluefeet 然而......你可以使用 UNPIVOT of Justice and Restoration
【参考方案1】:
试试这个:
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;
【讨论】:
以上是关于Mysql Count Columns 大于 0的主要内容,如果未能解决你的问题,请参考以下文章
MySQL - Row size too large (> 8126). Changing some columns to TEXT or BLOB
MySQL - Row size too large (> 8126). Changing some columns to TEXT or BLOB
MYSQL IF SELECT COUNT() 大于零 select * from table else return nothing found