我是ClickHouse的初学者,并试图用于处理我们项目的统计信息。一些桌面软件向我们的服务器发送信息,我们需要将操作系统分组到短名单。这个例子查询:ClickHouse中的合并功能替换
SELECT OS
FROM Req
GROUP BY OS
┌─OS──────────────────────────────────────────────────────────────────────────────┐
│ Майкрософт Windows 10 Корпоративная 2016 с долгосрочным обслуживанием │
│ Майкрософт Ознакомительная версия Windows Server 2012 Standard │
│ Майкрософт Windows 10 Домашняя для одного языка │
│ Microsoft Windows 8.1 Enterprise │
│ Майкрософт Windows 8 Корпоративная Прогрессивная │
│ Microsoft Windows Server 2008 R2 Standard │
│ Microsoft Windows 8.1 mit Bing │
│ Microsoft Windows 10 Home │
│ Microsoft Windows 8 Enterprise N │
│ Майкрософт Windows 8.1 Профессиональная │
│ Майкрософт Windows 8 Профессиональная │
│ Microsoft Windows 7 Rеактивная │
│ Microsoft Windows 10 Pro Insider Preview │
需要是总计清理名单:
8 xxx
8.1 yyy
2008 zzz
2008 R2 aaa
等。我没有找到COALESCE的功能,并尝试使用提取物来识别操作系统版本号:
select extract(OS, ' 7 ') || extract(OS, ' 8.1 ') || extract(OS, ' 10 ') || extract(OS, ' 2008 R2 ') || extract (OS, ' 2008 ') || extract(OS, ' 2012 R2 ') || extract(OS, ' 2012 ') as Value, count(distinct SID) from Req group by Value limit 100000;
但是!由于Windows 2008和Windows 2008 R2有“2008”的版本字符串,我接受这样的结果:
┌─Value───────────┬─uniqExact(SID)─┐
│ │ 224 │
│ 2012 │ 17 │
│ 10 │ 1315 │
│ 7 │ 4282 │
│ 2008 │ 20 │
│ 2012 R2 2012 │ 57 │
│ 2008 R2 2008 │ 136 │
│ 8.1 │ 754 │
└─────────────────┴────────────────┘
我需要什么样的功能是在我的情况下使用?谢谢。