【发布时间】:2011-06-24 22:58:33
【问题描述】:
请记住,我无法对表格进行规范化,所以我必须使用我得到的东西。在表中,行与此类似
name | widget1 | widget2 | widget3
------+-----------+----------+----------
Joe | blue | red |
Jane | green | |
Bob | red | red | green
Susy | green | green |
我想做的是计算小部件的总数(Joe 有 2 个小部件,Jane 有 1 个等),并计算相似小部件的数量(Bob 有 3 个小部件 - 2 个红色和 1 个绿色, Susy 有 2 个小部件 - 2 个绿色等)
这是我计算小部件总数的代码:
SELECT (
SUM( IF(widget1 <> "", 1, 0) ) +
SUM( IF(widget2 <> "", 1, 0) ) +
SUM( IF(widget3 <> "", 1, 0) )
) AS totalWidgets FROM table
效果很好。但是有没有更好的方法来做到这一点?此外,要计算相似值的数量,我确信我可以做类似的事情,但只需检查值是否相等......但它可能会变得很长而且很复杂。
有没有更直接的方法?
【问题讨论】: