2015-06-29 27 views
0

我mySQL中有一个表(T1),其产生下表:迭代通过柱和总结结果

type time full 
0  11  yes 
1  22  yes 
0  11  no 
3  13  no 

我想从这个创建第二表(T2),将总结信息在T1发现类似如下:

type time num_full total 
0  11  1   2 
1  22  1   1 
3  13  0   1 

我希望能够通过类型列,以重复,以能够启动这个总结,就像一个for循环。类型可以达到n的值,所以我宁愿不写n + 1 WHERE语句,然后每次添加更多类型时都必须更新代码。

请注意t2如何跳过值2的类型?当我尝试循环时,这也一直在逃避我。我只想找到在t2中创建行的类型。

虽然直接的答案会很好,但是指出一些我可以弄清楚的地方或者两者都有帮助。

回答

0

这可能会做你想做的

create table t2 if not exists select type, time, sum(full) num_full, count(*) count 
from t1 
group by type,time 
order by type,time; 

取决于您希望如何聚合时间列。

这是一个起点,该组参考的功能:https://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
这里创建语法 https://dev.mysql.com/doc/refman/5.6/en/create-table.html

+0

注意如果“全”列没有bool类型(TINYINT),那么你可以使用内case语句SUM函数,例如,如果'full'是字符串'yes'/'no'values,那么你可以使用SUM(CASE WHEN full ='yes'then else 0 END) – PaulF

+0

SUM(CASE WHEN full ='yes'THEN 1 ELSE 0结束) – PaulF