Mysql 计算频率

Mysql 计算频率,mysql,frequency,calculated-columns,Mysql,Frequency,Calculated Columns,我有一个带有变量版本的表,其中有V1、V2、V3、V4和其他变量调用,它可以是1或0。我需要做的是计算每个版本模态的总行数的1的频率:对于V1的ex,我有6行,调用等于1,在全局中有13行,我需要创建可变频率,它将指示6/13。 我现在要做的是创建两个表:第一个表的行数为,每个表的call等于1 version Version Call=1 V1 6 V2 4 V3 8

我有一个带有变量版本的表,其中有V1、V2、V3、V4和其他变量调用,它可以是1或0。我需要做的是计算每个版本模态的总行数的1的频率:对于V1的ex,我有6行,调用等于1,在全局中有13行,我需要创建可变频率,它将指示6/13。 我现在要做的是创建两个表:第一个表的行数为,每个表的call等于1

version Version Call=1 
             V1      6
             V2      4
             V3      8
             V4      3
和第二个表,其中包含每个版本的总行数

   Version Call total
     V1      13
     V2      14
     V3      15
     V4      23
然后我加入这两个表并计算频率。 我想问一下,是否有其他方法可以做到这一点

这是我的代码:

create table Call1 select *, count(*) as call1 from Version where call like '1'group by Version;
create table Calltotal select *, count(*) as calltot from Version group by Version;
update Calltotal change Version Version1 VARCHAR(2);
alter table Call1 add index (Version);
alter table Calltot add index(Version1);
create table final select * from Call1 left join Calltot on Call1.version=Calltot.version1;
alter table final add frequency INT NOT NULL;
update final set frequency=call1/Calltot;
指针

SELECT thing
     , COUNT(CASE WHEN other_thing = 10 THEN 'foo' END) x 
     , COUNT(*) y  
  FROM my_table 
 GROUP 
    BY thing;

您能给我们看一下您的代码吗?创建表Call1 select,count()作为Call1,从版本中调用,如“1”,按版本分组;创建表格Calltotal select,count()作为calltot,按版本从版本组开始;更新Calltotal更改版本1 VARCHAR(2);alter table Call1添加索引(版本);alter table Calltot add index(版本1);创建表final select*from Call1 left join Calltot on Call1.version=Calltot.version1;更改表最终添加频率INT不为空;更新最终设置频率=call1/Calltot;不是你的
创建
,而是你的查询;更新你的问题,不要在评论中发表。@Begayimugratalina我想他们的意思是“编辑你的原始帖子”!很好,在MySQL中,CASE位实际上可以简化为SUM(a=b),但上面的解决方案更具可移植性。