计算按b列分组的a列的sql百分比
我的数据如下: 名称|颜色 如何编写SQL来生成以下内容 名称|颜色|百分比 下面是我在microsoft access 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
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;