使用带分组的SQLite计算模式

使用带分组的SQLite计算模式,sqlite,Sqlite,我有一个带有ID(IP地址)和一个因子变量(Web浏览器)的表,我需要创建另一个表,该表包含每个ID的单个记录以及因子变量的模式。我在想类似于从日志组中按ip选择ip、模式(浏览器) 不幸的是,SQLite没有实现模式函数,因此这不起作用。我想用每个浏览器的计数构建一个临时表,然后使用selectdistinct ON或RANK()语句,但SQLite也不支持这些 另外,在一条语句中这样做也很好,因为还有几个其他因素的模式我也需要(并且也按相同的ID分组)。要计算模式,请按浏览器列分组,获取每个

我有一个带有ID(IP地址)和一个因子变量(Web浏览器)的表,我需要创建另一个表,该表包含每个ID的单个记录以及因子变量的模式。我在想类似于
从日志组中按ip选择ip、模式(浏览器)

不幸的是,SQLite没有实现
模式
函数,因此这不起作用。我想用每个浏览器的计数构建一个临时表,然后使用
selectdistinct ON
RANK()
语句,但SQLite也不支持这些


另外,在一条语句中这样做也很好,因为还有几个其他因素的模式我也需要(并且也按相同的ID分组)。

要计算模式,请按
浏览器
列分组,获取每个组的
计数(*)
,按该值排序,并获取具有最大值的记录

如果您已经有另一个分组依据,请使用相关子查询:

SELECT ip,
       (SELECT browser
        FROM log AS log2
        WHERE ip = ips.ip
        GROUP BY browser
        ORDER BY COUNT(*) DESC
        LIMIT 1)
FROM (SELECT DISTINCT ip
      FROM log) AS ips

有一个带有时间戳、标签和延迟的日志表。我们希望看到每个标签的延迟(发送时间:ST)模式(módusz)值,按时间戳分组。一组数据值的模式是最常出现的值

select L, T, avg( ST ) as MODEST, C
from (
    select L, T, ST, count( ST ) as C
    from (
            select label as L, 
                         substr( substr( timeStamp, 0, 8) || '00000000', 0, 14 ) as T, 
                         latency as ST 
            from LOG 
            order by L, T, ST 
            ) as XX 
    group by L, T, ST 
) as YY
where L || '#' || T || '#' || C in (  select L || '#' || T || '#' || max(C)
                                      from(
                                        select L, T, count( ST ) as C
                                        from (
                                          select label as L, 
                                          substr( substr( timeStamp, 0, 8) || '00000000', 0, 14 ) as T, 
                                          latency as ST
                                          from LOG 
                                        ) as XX 
                                        group by L, T, ST ) as YY
                                      group by L, T )
group by L, T, C