2014-09-24 109 views
1

我有一个名为'DEMO'的表。它有一个名为'SEX'的专栏,有记录,即'男','女'或空白。在MS Access中使用SQL计算列百分比

我想找个 '男性' 由百分比:

(计数 '男性'/(总记录数 - 空白记录))* 100

在一个单一的查询。

我正在使用MS Access 2010和.accdb文件。

回答

0

创建一个交叉表查询来分隔这些值。
使用公式创建一个新的查询,打开总计,以便在回报中只显示一行。 笨重,但有效。

+0

感谢您的建议。我通常会这样做,除非我有100个这样的查询来创建。这个想法是在Excel中'生成'SQL查询语句,即单个SQL查询是理想的。 – pbb 2014-09-25 01:36:01

0

使用Access不能使用CASE WHEǸ语法,虽然IIF是相似的:

SELECT 
    SUM(IIF(SEX = 'Male', 1.0, 0.0)) 
/COUNT(*) AS RATIO 
FROM 
    DEMO 
WHERE 
    SEX <> '' 
+0

感谢您的代码和帮助。虽然似乎不支持MS Access。 :( – pbb 2014-09-25 01:36:45

+0

'CASE WHEN'必须被'IIF'替换为Access – psadac 2014-09-25 05:32:35

0

我试过psadac了有轻微的变化,它似乎为我工作得很好的答案。我正在使用Access 2010.

SELECT Sum(IIf([SEX]= "Male",1,0))/Count(*) AS Ratio 
FROM DEMO 
HAVING (((Sum(IIf([SEX]= "Male",1,0))/Count(*)) Is Not Null));