MS Access分组百分比计算

时间:2016-05-25 08:17:18

标签: sql vba ms-access

不确定如何最好地解释这个,但我有一个表,例如看起来像这样:

Date        WebSitePage  Visits
01/01/2016  Visits       50
01/01/2016  Basket       40
01/01/2016  CheckOut     35
01/01/2016  ThankYou     25
02/01/2016  Visits       43
02/01/2016  Basket       23
02/01/2016  CheckOut     20
02/01/2016  ThankYou     12

正如您所看到的,它们是网站页面(本例中为虚构)。我想创建一个查询,无论是通过计算访问查询还是SQL或VBA(限制因为您无法在Access SQL中使用CASE语句),计算WebSitePage转换百分比,例如Basket / CheckOut,然后CheckOut / ThankYou以及访问ThankYou / Visits等的转换。

我正在努力学习如何编译查询或编写计算。 它通常在Excel中很简单。但我也不想将WebSitePage分成不同的列。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

您可以使用此查询获取4个不同列中的4个不同计数,以简化任务:

SELECT   [Date],
         Sum(IIf(WebSitePage = "Visits", Visits, 0))   AS Visits,
         Sum(IIf(WebSitePage = "Basket", Visits, 0))   AS Basket,
         Sum(IIf(WebSitePage = "CheckOut", Visits, 0)) AS CheckOut,
         Sum(IIf(WebSitePage = "ThankYou", Visits, 0)) AS ThankYou
FROM     mytable
GROUP BY [Date]

请注意,使用IIf,您可以解决在更多符合ISO的SQL数据库中使用CASE WHEN表达式的问题。

如果您将上述语句保存为MS Access中的查询(让我们称之为MyQuery),那么您可以执行以下操作:

SELECT   [Date],
         100*Basket/CheckOut   AS Basket_CheckOut_Pct,
         100*CheckOut/ThankYou AS CheckOut_ThankYou_Pct,
         100*ThankYou/Visits   AS ThankYou_Visits_Pct
FROM     MyQuery