Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算按b列分组的a列的sql百分比_Sql_Ms Access_Ms Access 2010 - Fatal编程技术网

计算按b列分组的a列的sql百分比

计算按b列分组的a列的sql百分比,sql,ms-access,ms-access-2010,Sql,Ms Access,Ms Access 2010,我的数据如下: 名称|颜色 如何编写SQL来生成以下内容 名称|颜色|百分比 下面是我在microsoft access SQL中尝试的代码 select name, color, (count(color)*100.0/count(*)) as 'perc' from mytable group by name, color; 你需要得到每种颜色的总数才能得到百分比。这需要加入另一个值。我认为以下几点将在Access中起作用: select nc.name, nc.color, nc.cnt

我的数据如下:

名称|颜色 如何编写SQL来生成以下内容

名称|颜色|百分比 下面是我在microsoft access SQL中尝试的代码

select name, color, (count(color)*100.0/count(*)) as 'perc'
from mytable
group by name, color;

你需要得到每种颜色的总数才能得到百分比。这需要加入另一个值。我认为以下几点将在Access中起作用:

select nc.name, nc.color, nc.cnt * 100 / n.cnt & '%'
from (select name, color, count(*) as cnt
      from mytable as t 
      group by name, color
     ) as nc inner join
     (select name, count(*) as cnt
      from mytable as t
      group by name
     ) as n
     on nc.name = n.name;

嘿,谢谢戈登,我试过谷歌搜索,但我觉得这个问题比我找到的答案要复杂一点。access如何知道“nc”和“n”是什么?@barker这些是别名,可以将它们分配给表或子查询,它们有助于提高可读性,并使引用同一个表时能够区分。它们在子查询的
之后分配。
select name, color, (count(color)*100.0/count(*)) as 'perc'
from mytable
group by name, color;
select nc.name, nc.color, nc.cnt * 100 / n.cnt & '%'
from (select name, color, count(*) as cnt
      from mytable as t 
      group by name, color
     ) as nc inner join
     (select name, count(*) as cnt
      from mytable as t
      group by name
     ) as n
     on nc.name = n.name;