如何从MySQL表创建一个计算每列中特定条件的视图?

时间:2014-10-01 18:47:10

标签: mysql sql

我有一张类似这样的表:

Name    Alice    Bob    Carl    Dan    ...
Foo     2        2      0       1
Bar     1        2      2       0  
...  

我想要的是制作一个视图(或只是做一个查询),它会告诉我Alice,Bob等等列中有多少0,1和2。所以我想得到一个看起来像这样的表:

Name     0s   1s   2s
Alice    5    2    3
Bob      7    1    4
Carl     3    ...etc.

我该怎么做?单元格中的值只能是0,1或2,因此对于任意数据都不需要是通用的。我需要做的表有大约70列和1250行。

1 个答案:

答案 0 :(得分:1)

使用您拥有的数据结构相当痛苦。基本上,你可以做这样的事情:

select 'Alice' as name, sum(Alice = 0) as Zeros, sum(Alice = 1) as Ones, Sum(Alice = 2) as Twos
from table t
union all
select 'Bob' as name, sum(Bob = 0) as Zeros, sum(Bob = 1) as Ones, Sum(Bob = 2) as Twos
from table t
union all
. . .

也就是说,为输出中的每一行创建一个子查询。

注意:这可能是实现您想要的最简单方法。如果您有一个大表,可能有其他方法表现更好。

此外,您可以使用电子表格为每个子查询生成代码。这可以使编写查询更容易。

编辑:

使用三列构建表格会好得多:

  • 名称
  • 应该叫什么Foo / Bar

然后你可以通过条件聚合相对容易地做到这一点。