按位置查询大条目的总数、平均值和数量
Query the total, average and number of large entries by location
在 Access 中,我有两个表,我被要求将这些表中的一些统计信息输出到查询结果中。麻烦的是,我不知道该怎么做,甚至不知道该怎么做。
我要找的输出如下-
- 位置 - [Active Directory].[AD Location] 字段中的单个位置。
- Count - [Active Directory].[AD Location] 字段中每个位置的计数。
- 总邮箱大小 - 每个位置的 [IBM Notes].[Notes 邮箱大小] 字段的总大小。
- 平均邮箱大小 - 每个位置的 [IBM Notes].[Notes 邮箱大小] 字段的平均大小。
- 大邮箱 - [IBM Notes].[Notes Mailbox Size] 字段中每个位置大于 1.5GB 的邮箱数量
我需要查询的表是这样构造的-
Table 1 - 活动目录 -
- 位置 - 短文本 (255)。
Table 2 - IBM 笔记 -
- 邮箱大小 - 短文本 (255)(格式为 "x.xx GB",不幸的是我无法更改)。
我知道如何连接表并输出 Location 和 Count 字段,但我真的迷路了。感谢任何提示和技巧。
这是我目前所拥有的 -
SELECT DISTINCT [Active Directory].[AD Location] AS [Location], Count([Active Directory].[AD Location]) AS [Count]
FROM [Active Directory] INNER JOIN [IBM Notes] ON [AD Active Directory].[AD Email Address] = [IBM Notes].[Notes Email Address];
这里是 Active Directory 和 IBM Notes 表中的一些示例数据,以及预期结果(每个都在其自己的选项卡上)-
类似这样的内容 -- 我想您明白了。我在您的问题中看到邮箱大小不是数字,因此您必须将其转换为数字千兆字节。您必须进行此更改才能使其正常工作。
SELECT
A.[AD Location] AS [Location],
Count(A.[AD Location]) AS [Count],
SUM(Val(N.[Notes Mailbox Size])) AS [Total Mailbox Size],
AVG(Val(N.[Notes Mailbox Size])) AS [Average Mailbox Size],
SUM(IIF(Val(N.[Notes Mailbox Size]) > 1.5,1,0)) AS [Large Mailboxes]
FROM [Active Directory] AS A
INNER JOIN [IBM Notes] AS N ON A.[AD Email Address] = N.[Notes Email Address]
GROUP BY A.[AD Location]
上面的语句包括检查以确保 Notes Mailbox Size
字段中的值不是 Null
-
SELECT
A.[AD Location] AS Location,
Count(A.[AD Location]) AS [Count of Location],
Sum(IIf(IsNull(N.[Notes Mailbox Size]), "0", Val(N.[Notes Mailbox Size]))) AS [Total Mailbox Size (GB)],
Round(Avg(IIf(IsNull(N.[Notes Mailbox Size]), "0", Val(N.[Notes Mailbox Size]))), 2) AS [Average Mailbox Size (GB)],
Sum(IIf(IsNull(N.[Notes Mailbox Size]), "0", IIf(Val(N.[Notes Mailbox Size]) > 2.5, 1, 0))) AS [Count of Large Mailboxs]
FROM [Active Directory] AS A
INNER JOIN [IBM Notes] AS N ON A.[AD Email Address] = N.[Notes Email Address]
GROUP BY A.[AD Location];
在 Access 中,我有两个表,我被要求将这些表中的一些统计信息输出到查询结果中。麻烦的是,我不知道该怎么做,甚至不知道该怎么做。
我要找的输出如下-
- 位置 - [Active Directory].[AD Location] 字段中的单个位置。
- Count - [Active Directory].[AD Location] 字段中每个位置的计数。
- 总邮箱大小 - 每个位置的 [IBM Notes].[Notes 邮箱大小] 字段的总大小。
- 平均邮箱大小 - 每个位置的 [IBM Notes].[Notes 邮箱大小] 字段的平均大小。
- 大邮箱 - [IBM Notes].[Notes Mailbox Size] 字段中每个位置大于 1.5GB 的邮箱数量
我需要查询的表是这样构造的-
Table 1 - 活动目录 -
- 位置 - 短文本 (255)。
Table 2 - IBM 笔记 -
- 邮箱大小 - 短文本 (255)(格式为 "x.xx GB",不幸的是我无法更改)。
我知道如何连接表并输出 Location 和 Count 字段,但我真的迷路了。感谢任何提示和技巧。
这是我目前所拥有的 -
SELECT DISTINCT [Active Directory].[AD Location] AS [Location], Count([Active Directory].[AD Location]) AS [Count]
FROM [Active Directory] INNER JOIN [IBM Notes] ON [AD Active Directory].[AD Email Address] = [IBM Notes].[Notes Email Address];
这里是 Active Directory 和 IBM Notes 表中的一些示例数据,以及预期结果(每个都在其自己的选项卡上)-
类似这样的内容 -- 我想您明白了。我在您的问题中看到邮箱大小不是数字,因此您必须将其转换为数字千兆字节。您必须进行此更改才能使其正常工作。
SELECT
A.[AD Location] AS [Location],
Count(A.[AD Location]) AS [Count],
SUM(Val(N.[Notes Mailbox Size])) AS [Total Mailbox Size],
AVG(Val(N.[Notes Mailbox Size])) AS [Average Mailbox Size],
SUM(IIF(Val(N.[Notes Mailbox Size]) > 1.5,1,0)) AS [Large Mailboxes]
FROM [Active Directory] AS A
INNER JOIN [IBM Notes] AS N ON A.[AD Email Address] = N.[Notes Email Address]
GROUP BY A.[AD Location]
上面的语句包括检查以确保 Notes Mailbox Size
字段中的值不是 Null
-
SELECT
A.[AD Location] AS Location,
Count(A.[AD Location]) AS [Count of Location],
Sum(IIf(IsNull(N.[Notes Mailbox Size]), "0", Val(N.[Notes Mailbox Size]))) AS [Total Mailbox Size (GB)],
Round(Avg(IIf(IsNull(N.[Notes Mailbox Size]), "0", Val(N.[Notes Mailbox Size]))), 2) AS [Average Mailbox Size (GB)],
Sum(IIf(IsNull(N.[Notes Mailbox Size]), "0", IIf(Val(N.[Notes Mailbox Size]) > 2.5, 1, 0))) AS [Count of Large Mailboxs]
FROM [Active Directory] AS A
INNER JOIN [IBM Notes] AS N ON A.[AD Email Address] = N.[Notes Email Address]
GROUP BY A.[AD Location];