计算sql表的百分比

时间:2014-09-22 06:02:40

标签: sql ms-access percentage

我有一个名为Fruits的表,有苹果,橘子等记录

如何编写一个告诉我苹果百分比的查询?

到目前为止我一直在尝试:

select 

sum(case when APPLES = 'Yes' then 1 else 0 end) * 100 / count(APPLES)

from FRUITS;

4 个答案:

答案 0 :(得分:1)

首先,我假设当您说“一个简单的MS Access数据库”时,您指的是.mdb而不是.adp.accdp文件。

其次,你正在经历痛苦,因为你的桌子没有正确规范化。您有数据作为列名!如果你想添加另一个水果,你将不得不添加一个新的列 - 这不是一个好的设计(很抱歉这样说,但这是真的)。​​

到目前为止,您的查询看起来像这样(不需要连接或扫描表两次)。

SELECT
   Sum(Iif(Apple = "yes", 1, 0)) * 100 / Count(*)
FROM
   Fruits
;

如果您设计了专栏,那么数据是行而不是列名,则查询看起来更像是:

SELECT
   Sum(Iif(Fruit = "apple", 1, 0)) * 100 / Count(*)
FROM
   Fruits
;

在我更好地理解您的数据结构之前,我无法再提出任何建议。

答案 1 :(得分:0)

内部联接查询获得水果和外部查询的总数是按果实分组并计算水果可用的水果总数:

select fruit, (count(*)/A.total_count) as perc_fruit from
table 
inner join (
 select count(*) as total_count from table 
) as A 
group by fruit

答案 2 :(得分:0)

您可以尝试此查询:

如果某个表包含两列furit_name和no_of_fruits,请尝试执行以下查询。

SELECT (100 *(   (从水果中选择NO_OF_FRUITS WHERE fruit_name ='APPLE'   )/   (SELECT SUM(NO_OF_FRUITS)FROM fruits   ))) AS Percentage_FRUITS FROM dual ;

答案 3 :(得分:-1)

你可以这样做:

编辑:

Table

select 
Sum(IIF(Apple,1,0) * 100) / count(*) 
from FRUITS;

-- Where `Apple` is of Datatype (Yes/No)

演示:

Result