2012-09-18 229 views
1

我能够使用计算百分比计,在特定日期在Microsoft Access 2007 SQL查询:SQL百分比数查询按日期

SELECT Date, Val, (Count(Val)/(SELECT Count(*) From Table HAVING Date=#7/31/2012#) as PercentVal  
FROM Table 
GROUP BY Date, Val 
HAVING Date=#7/31/2012# 

不过,我想使这个同样的计算,在每一个日期使用计数总数。例如,查询:

SELECT Date, Val, Count(*) AS CountVal 
FROM Table 
GROUP BY Date, Val 

找到每个周期的计数。我想添加一个额外的列与百分比计数。但是,我似乎无法弄清楚如何计算每个时期的计数百分比,而不使用上述的文本块并为每个时期设置查询。

回答

1

您可以子查询像这样:

SELECT A.ADate, A.Val, COUNT(A.Val)/B.DateCount 
FROM Table1 AS A 
INNER JOIN (
    SELECT C.ADate, COUNT(*) AS DateCount 
    FROM Table1 C 
    GROUP BY C.ADate 
) AS B ON A.ADate = B.ADate 
GROUP BY A.ADate, A.Val, B.DateCount 
+0

以一个子查询的方法似乎是正确的做法。我不得不将第二个select语句中的COUNT(*)更改为Count(C.Val),以便为了简单起见,将一个条件强加给Val。 – John