0

我应该如何设计 sql 语句来计算每个 User-Agent ID 中的设备数量?

我在 MS Log Parser Studio (LOGPARSER) 工作,致力于编写不同的查询交换日志 (IIS W3C LOG) 以编译移动设备的统计信息。

这是查询:

SELECT TO_STRING(To_timestamp(date, time), 'MM-dd-yyyy') as Day, cs(user-agent) as
UserAgent /* Count(MyDeviceId as DeviceId) as NrOfSameDevice 
USING
EXTRACT_VALUE(cs-uri-query,'DeviceId') as MyDeviceId */
FROM '[LOGFILEPATH]' 
WHERE cs-uri-stem LIKE '%Microsoft-Server-ActiveSync%'
GROUP BY Day, UserAgent
ORDER BY Day

此查询的结果是:

在此处输入图像描述

4

1 回答 1

0

我假设您要计算每天不同设备的数量,UserAgent对。

这通常使用 COUNT(DISTINCT) 或嵌套查询来完成,但由于 LogParser 都不支持(GROUP BY 不支持 COUNT(DISTINCT)),因此您必须将查询分成两部分:

  1. 第一个查询选择 Day、UserAgent 和 DeviceId 的不同组合:

    SELECT DISTINCT TO_STRING(To_timestamp(date, time), 'MM-dd-yyyy') as Day, cs(user-agent) as UserAgent, EXTRACT_VALUE(cs-uri-query,'DeviceId') as MyDeviceId INTO TmpOutput.csv FROM '[日志文件路径]'

  2. 第二个查询解析第一个按前两个字段分组的结果:

    SELECT Day, UserAgent, COUNT(*) FROM TmpOutput.csv GROUP BY Day, UserAgent ORDER BY Day

确保将第一个命令配置为还将标头输出到 TmpOutput.csv。

于 2012-12-04T16:58:43.837 回答