如何在MYSQL中选择按regex分组统计数据?
我有一个保存用户地理位置信息的表。如何通过创建正则表达式来计算使用相同设备的用户数 质疑 结果如何在MYSQL中选择按regex分组统计数据?,mysql,sql,Mysql,Sql,我有一个保存用户地理位置信息的表。如何通过创建正则表达式来计算使用相同设备的用户数 质疑 结果 userAgent | countVisitor Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:82.0) G...| 1 Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) Appl...| 1 Mozilla/5.0 (iPad; C
userAgent | countVisitor
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:82.0) G...| 1
Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) Appl...| 1
Mozilla/5.0 (iPad; CPU OS 11_4 like Mac OS X) Appl...| 1
Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac O...| 1
Mozilla/5.0 (Linux; Android 7.0; SM-G892A Build/NR...| 1
Array ( [Linux] => 2 [Mac OS X] => 4 [Android] => 4 [Windows] => 1 )
期望结果
userAgent | countVisitor
Ubuntu | 1
iPad | 2
iPhone | 1
Android | 1
嗯。我看不出一种模式可以真正使用。您可以使用
大小写表达式:
SELECT (CASE WHEN userAgent LIKE '%Ubuntu%' THEN 'Ubuntu'
WHEN userAgent LIKE '%iPad%' THEN 'iPad'
WHEN userAgent LIKE '%iPhone%' THEN 'iPhone'
WHEN userAgent LIKE '%Android%' THEN 'Android'
ELSE 'Other'
end) as platform,COUNT(DISTINCT ipAddress) as countVisitor
FROM geolocation
WHERE last_update BETWEEN '2020-11-01' AND '2020-12-01'
GROUP BY platform
ORDER BY MIN(last_update) ASC
我提出了一个非常难看的PHP解决方案,使用并将数据推送到数组中。这对我想做的事很有效。无论如何,我从中检索用户代理。它通常返回一个与此类似的字符串
Mozilla/5.0(Linux;Android 7.0;SM-G892A构建/NRD90M;wv)
AppleWebKit/537.36(KHTML,类似Gecko)版本/4.0 Chrome/67.0.3396.87
Mobile Safari/537.36
仅从该字符串,您就可以检索所需的任何信息(设备、浏览器等)
质疑
当
结果
userAgent | countVisitor
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:82.0) G...| 1
Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) Appl...| 1
Mozilla/5.0 (iPad; CPU OS 11_4 like Mac OS X) Appl...| 1
Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac O...| 1
Mozilla/5.0 (Linux; Android 7.0; SM-G892A Build/NR...| 1
Array ( [Linux] => 2 [Mac OS X] => 4 [Android] => 4 [Windows] => 1 )
提取用户代理的规则是什么?这并不明显。
Array ( [Linux] => 2 [Mac OS X] => 4 [Android] => 4 [Windows] => 1 )